16进制字符串

zejun_yao 2006-05-15 04:55:58
有4个字节的数组 char str[4] ={0x01,0x02,0x01,0x0a};
现在希望将这数组转为十进制的整型,该如何做?
我希望得到的结果是0x0102010a = 16908554
请教了!
...全文
997 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
zejun_yao 2006-05-16
  • 打赏
  • 举报
回复
thanks,over!!!
铖邑 2006-05-16
  • 打赏
  • 举报
回复
移动8个位,就是一个字节
aronzhou 2006-05-16
  • 打赏
  • 举报
回复
unsigned long num = 0;
for (int i = 0; i < 4; ++i) {
num = (num << 8) | str[i];
}
num的值就是了

————————————————————
num<<8 为什么是8?
铖邑 2006-05-16
  • 打赏
  • 举报
回复
char *str[4] ={0x00,0x00,0x00,0x01};
unsigned int x = *(unsigned int*)str;
0x1000000=====16777216
用unsigned int移位运算不会把符号带进来(可能又会引发下一个问题了,汗一个)
当然也可以用int,看需要了
zejun_yao 2006-05-16
  • 打赏
  • 举报
回复
char *str[4] ={0x00,0x00,0x00,0x01};
unsigned int x = *(unsigned int*)str;
我测试过x的值为16777216,为什么?

另外为什么要用unsigned int 而不能用int?
铖邑 2006-05-16
  • 打赏
  • 举报
回复
整数在内存里面表示为四个字节,所以你可以把四个字节的字符串转成整数
zejun_yao 2006-05-16
  • 打赏
  • 举报
回复
语法我了解,只是语义我不清楚,将str转为无符号整形的意义是什么?
铖邑 2006-05-16
  • 打赏
  • 举报
回复
unsigned int x = *( unsigned int* )str;

------------>
unsigned int *p = ( unsigned int* )str;
unsigned int x = *p;
zejun_yao 2006-05-16
  • 打赏
  • 举报
回复
请教各位了!
zejun_yao 2006-05-16
  • 打赏
  • 举报
回复
unsigned int x = *( unsigned int* )str;
这句代码的意思是什么啊?
铖邑 2006-05-16
  • 打赏
  • 举报
回复
整数的存储是自低向高的字节排列顺序,象楼主所说的0x0102010a,用字符串表示应该是:
char str[4] ={0x0a,0x01,0x02,0x01};所以……………………
zejun_yao 2006-05-16
  • 打赏
  • 举报
回复
具体解释一下,请教了
铖邑 2006-05-16
  • 打赏
  • 举报
回复
它这个顺序是倒过来的。跟楼主上面的那个做法不同
zejun_yao 2006-05-16
  • 打赏
  • 举报
回复
从网络上获取16进制的数据(以字符串形式表达),有段代码看不懂,请帮忙解释一下
char str[4] ={.....};
unsigned int x = *( unsigned int* )str;
unsigned int y = htonl( x );

然后y就是所得的16进制数的10进制结果。为什么啊?
sankt 2006-05-15
  • 打赏
  • 举报
回复
学习
dreamXren 2006-05-15
  • 打赏
  • 举报
回复
。。。。慢了1秒。。。。
dreamXren 2006-05-15
  • 打赏
  • 举报
回复
unsigned long num = 0;
for (int i = 0; i < 4; ++i) {
num = (num << 8) | str[i];
}
num的值就是了
铖邑 2006-05-15
  • 打赏
  • 举报
回复
int result = 0;
for(int i = 0; i < 4; i ++)
result = result << 8 | str[i];

64,685

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧