目的是将整型变量转为十六进制并放入字节数组:
我用 atoi 将整数转为 CString,然后用 Format(“%x”,str)转为十六进制字符串,用_tcscpy 放
入字符数组,然后再赋值给字节数组。结果是如下表:例如整数为 1000,十六
进制数 03e8
字节数组
而我想要的结果是:
00 00 03 E8
有没有办法实现?
这样一定不行,因为字符数组的每个字符就是一个字节,所以会是上面的结果。
利用位的与操作进行;
Byte m[4];
Int a=1000;
m [3]=(a&0xff);
m [2]=(a&0xff00);//这样取得是四位 16 进制数,两个字节,高位溢出,所以值为零
m [1]=(a&0xff0000);
m [0]=(a&0xff000000);
在数组 m 中就会保存
00 00 03 E8
如果要输出数组 m 中的值,就指定输出格式为 16 进制。
bt=atoi(m_edit_maxPresser);
btMax[3]=(bt&0xff);
bt=bt/pow(16,2);//指数运算
btMax[2]=(bt&0xff);
bt=bt/pow(16,4);//
btMax[1]=(bt&0xff);
bt=bt/pow(16,6);//
btMax[0]=(bt&0xff);
*btMax=(bt&0xffffffff);
bt=atoi(m_edit_minPresser);
btMin[3]=(bt&0xff);
bt=bt/pow(16,2);//
btMin[2]=(bt&0xff);
bt=bt/pow(16,4);//
btMin[1]=(bt&0xff);
bt=bt/pow(16,6);//
btMin[0]=(bt&0xff);
btch=(nIndex&0xff);
0 3 e 8