关于int整数转换存储到字符数组
2017-06-04 20:11
330 查看
我在CSDN上提了问,链接如下:
http://bbs.csdn.net/topics/392176297
另外,在大端设备上运行了下面的代码段:
![](https://img-blog.csdn.net/20170604201140955?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTHVjaWVuX3pob3U=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
编译链接并运行的结果如下:
这里整数 num 用 16进制的形式表示的,其实它对应的十进制数值为 305419896,snprintf 是将对应类型的数值转换为字符数组或字符串。例如,这里的 305429896 中的最高位 3 ,数值 3 对应的 ASCII 值为 0x33;数值 0 对应的 ASCII 值为 0x30;数值 5 对应的 ASCII 值为 0x35
如果 num 为负数,同样的会转换为字符,将 '-' 转换为对应的 ASCII 码
![](https://img-blog.csdn.net/20170604201154423?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTHVjaWVuX3pob3U=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
十进制的1,2,3...... 对应的 ASCII 码的 十六进制表示
![](https://img-blog.csdn.net/20170604201204424?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTHVjaWVuX3pob3U=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
跟上面的 snprintf 函数功能类似的 memcpy 函数在设备上运行下面的代码段:
![](https://img-blog.csdn.net/20170604201219799?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTHVjaWVuX3pob3U=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
编译链接并运行后得到:
由于这里的 memcpy 函数是将整型 num 在内存中的存储直接拷贝,而设备是大端的,所以从低地址到高地址字节分别为 0x12,0x34,0x56,0x78,所以,使用 memcpy 函数拷贝后的结果如下
![](https://img-blog.csdn.net/20170604201230096?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTHVjaWVuX3pob3U=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
涉及到通信的,建议不要用整型数直接传输,而是用字符串,即建议使用第一种 snprintf 和 atoi 的联合使用
整数 -1 的二进制表示是四个字节的1,对应的十六进制为全F,即 0xFFFFFFFF ,负数在计算机中的存储是用补码(具体转换,这里不提)
'\1' 和 '1' 表示的意义不同,'1' 表示字符 1,其对应的 ASCII 码为 0x31;'\1' 表示 ASCII 码为 1
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
相关文章推荐
- 关于字符数组的存储以及强制转换
- C语言 字符数组转换整数 stringToInt
- asp.net(c#)字符串转换成字符数组 字符串转换成int 数组
- 关于atoi字符串转换成int整数的一些问题
- 将int数组转换为整数
- Java整数-字节,字节-字符,字节数组-十六进制字符串转换
- 编程练习2——02—将整数转换为相应的一个字符数组
- 不用字符串数组将一整数转换为各个数字组成的int[]数组
- 将整数转换为相应的一个字符数组。 分析:从个位提取数字,组合字符 符号位的处理 12345=>"12345"
- 关于C中字符数组,字符指针以及C++中string类型的两两转换及排序
- 简单LinuxC程序关于加密(将任意长字符转换为定长整数)
- Java整数-字节,字节-字符,字节数组-十六进制字符串转换
- C++编程思想:[2]字符数组转换整数和浮点数
- Java:关于Integer整数与byte、byte数组之间的转换
- 整型int和字符数组byte相互转换的源程序
- 主题:Java整数-字节,字节-字符,字节数组-十六进制字符串转换
- 关于浮点数转换为整数的(int )和(int &)形式
- 关于字符的转换和存储
- 简单LinuxC程序关于加密(将任意长字符转换为定长整数)
- 将整数转换为相应的一个字符数组