读书人

字符型转换成整型,该如何处理

发布时间: 2012-05-29 12:16:00 作者: rapoo

字符型转换成整型
代码:

C/C++ code
#include <iostream>#include <string>using namespace std;int main(){    char buf[4];    buf[0] = 0x31;    buf[1] = 0x32;    buf[2] = 0x33;    int num;    memset(&num, 0, sizeof(int));    memcpy(&num, buf, 2);    cout << num << endl;    return 0;}


求解,结果是怎么来的。


[解决办法]
整型变量num占4个字节,执行memset(&num,0,sizeof(int))这一条语句后,num的值就变成了0,则num的十六进制表示为:0x0000 0000

执行memcpy(&,buf,2)完这一条语句后,就将buf[0]和buf[1]这两个字节中的内容复制到了变量num的第1个和第二个字节中,那么num的值用十六进制表示为:0x0000 3231,将其变为整型就是:12849
[解决办法]
探讨

整型变量num占4个字节,执行memset(&num,0,sizeof(int))这一条语句后,num的值就变成了0,则num的十六进制表示为:0x0000 0000

执行memcpy(&,buf,2)完这一条语句后,就将buf[0]和buf[1]这两个字节中的内容复制到了变量num的第1个和第二个字节中,那么num的值用十六进制表示为:0x0000 3231,将其变为整型……

[解决办法]
little endian
低地址放的是低字节
所以是32在高字节31在低字节

读书人网 >C++

热点推荐