您的位置:首页 > 其它

关于int整数转换存储到字符数组

2017-06-04 20:11 330 查看
我在CSDN上提了问,链接如下:
http://bbs.csdn.net/topics/392176297
另外,在大端设备上运行了下面的代码段:



编译链接并运行的结果如下:
这里整数 num 用 16进制的形式表示的,其实它对应的十进制数值为 305419896,snprintf 是将对应类型的数值转换为字符数组或字符串。例如,这里的 305429896 中的最高位 3 ,数值 3 对应的 ASCII 值为 0x33;数值 0 对应的 ASCII 值为 0x30;数值 5 对应的 ASCII 值为 0x35

如果 num 为负数,同样的会转换为字符,将 '-' 转换为对应的 ASCII 码



十进制的1,2,3...... 对应的 ASCII 码的 十六进制表示



跟上面的 snprintf 函数功能类似的 memcpy 函数在设备上运行下面的代码段:



编译链接并运行后得到:

由于这里的 memcpy 函数是将整型 num 在内存中的存储直接拷贝,而设备是大端的,所以从低地址到高地址字节分别为 0x12,0x34,0x56,0x78,所以,使用 memcpy 函数拷贝后的结果如下



涉及到通信的,建议不要用整型数直接传输,而是用字符串,即建议使用第一种 snprintf 和 atoi 的联合使用
整数 -1 的二进制表示是四个字节的1,对应的十六进制为全F,即 0xFFFFFFFF ,负数在计算机中的存储是用补码(具体转换,这里不提)
'\1' 和 '1' 表示的意义不同,'1' 表示字符 1,其对应的 ASCII 码为 0x31;'\1' 表示 ASCII 码为 1 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息