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

  1. 我在CSDN上提了问,链接如下:
  1. 另外,在大端设备上运行了下面的代码段:


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

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



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



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


编译链接并运行后得到:

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


  1. 涉及到通信的,建议不要用整型数直接传输,而是用字符串,即建议使用第一种 snprintf 和 atoi 的联合使用
  1. 整数 -1 的二进制表示是四个字节的1,对应的十六进制为全F,即 0xFFFFFFFF ,负数在计算机中的存储是用补码(具体转换,这里不提)
  1. '\1' 和 '1' 表示的意义不同,'1' 表示字符 1,其对应的 ASCII 码为 0x31;'\1' 表示 ASCII 码为 1 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值