比方说,一个char类型数组。
char dada[4];
我们知道,其在计算机内都是二进制表示的,dada[4]刚好四个字节,共32位,我们假如它存贮的为某一商品的价格值,即一个整数值,现在,我们如何将存贮dada内的整数值取出来呢,因为直观上看它只不过是一个char类型的数组,我们是看不出它所表示的数值来。事实上,dada能表示的最大整数值为2的32次方减1。
VC里面有什么方法中函数可以直接转换吗?还是得自己写函数转换?如果自己写有什么好的思路提供提供!
char dada[4];
我们知道,其在计算机内都是二进制表示的,dada[4]刚好四个字节,共32位,我们假如它存贮的为某一商品的价格值,即一个整数值,现在,我们如何将存贮dada内的整数值取出来呢,因为直观上看它只不过是一个char类型的数组,我们是看不出它所表示的数值来。事实上,dada能表示的最大整数值为2的32次方减1。
VC里面有什么方法中函数可以直接转换吗?还是得自己写函数转换?如果自己写有什么好的思路提供提供!
解决方案 »
- 哪位高人能给讲讲CListCtrl::HitText()是做什么用的?
- 请教如何批量安装驱动
- 哪位有《windows程序设计》啊!是王艳平的!我在网上找了好久都没找到啊! 100分
- 一个MFC程序的内存泄漏问题?!急,在线等!请各位多多指点。
- 谨以此帖提醒一些盲目赚分的同行 + 散分(该散了:))
- 请教如何设定某一个cell为字符串?
- 请教!急!
- 请问,如果一个class的static data member是另一个class,那么,这个static data member的destructor什么时候被调用?
- 有谁帮忙看看下面哪个关于分隔器的问题,我在这另开帖子加分了
- 关于VC中的视图
- 注册表键值名称不明,我如何才能一个个访问
- 请教:“程序运行时跳出MSDEV.EXE-没有磁盘”错误!
测试过,上面这个方法不对。
char dada[4];
data[0]='d';//ASCII值为100
data[1]=0;
data[2]=0;
data[3]=0;int val = *((int*)dada); 如果左边第0位为最低位,则val应该获取到得整数值应该为100,而经测试val获取到的值为-859045788
倒较像一个地址值。
{
int nData;
char szData[4];
}UN_MYDATA;自己再去查查 union 吧,不多说了,费时间
int 在你的机器里保存时的字节序
szData要按这个顺序存
for (int i=0;i<4;i++)
{
CString Tmp;
if (dada[i]<10) Tmp.Format("0%d",dada[i]);
else Tmp.Format("%d",data[i]);
sMoney+=Tmp;
}
int iMoney=atoi(sMoney);
ASSERT(money == 1234);
atof, atoi, _atoi64, atol这几个函数的使用例子:#include <stdlib.h>
#include <stdio.h>void main( void )
{
char *s; double x; int i; long l; s = " -2309.12E-15"; /* Test of atof */
x = atof( s );
printf( "atof test: ASCII string: %s\tfloat: %e\n", s, x ); s = "7.8912654773d210"; /* Test of atof */
x = atof( s );
printf( "atof test: ASCII string: %s\tfloat: %e\n", s, x ); s = " -9885 pigs"; /* Test of atoi */
i = atoi( s );
printf( "atoi test: ASCII string: %s\t\tinteger: %d\n", s, i ); s = "98854 dollars"; /* Test of atol */
l = atol( s );
printf( "atol test: ASCII string: %s\t\tlong: %ld\n", s, l );
}
int i;
char buf[4]; //保存
i = 12345;
memcpy(buf, &i, 4); //取出
int *p = (int*)buf;
i = *p;
printf("%d",i);