首页 新闻 会员 周边

数组char a[4] 保存了一个数据,怎么转换为unsigned int呢 ?

0
[待解决问题]

注意char并不表示字符的

a[0]=0;

a[1]=0;

a[2]=3;

a[3]=0;

那么我要的unsigned int b应该等于:

b= 0x00000300 = 768

这个有现成的函数么?(C++)

Ethan.Wong的主页 Ethan.Wong | 初学一级 | 园豆:200
提问于:2011-05-24 16:41
< >
分享
所有回答(3)
-1

strtol可以,参考 http://baike.baidu.com/view/1874375.htm

2012 | 园豆:21230 (高人七级) | 2011-05-24 16:57
我先看一下
支持(0) 反对(0) Ethan.Wong | 园豆:200 (初学一级) | 2011-05-24 17:19
好像不是这个意思。我不用识别字符的,只是把那四个字节变成unsigned int 保存
支持(0) 反对(0) Ethan.Wong | 园豆:200 (初学一级) | 2011-05-24 17:22
1

我看了一下你先要的结果 应该是b = ((a[0]&0xFF)<<24)| ((a[1]&0xFF)<<16)| ((a[2]&0xFF)<<8)| (a[3]&0xFF)

或者你自己定义一个 联合体 

union b

{

  char a[4];

  unsigned int b;

};

只需要给a赋值 然后去读b就OK 当然这里要考虑大小端问题。

eagle_ice | 园豆:220 (菜鸟二级) | 2011-06-11 10:49
0

上面的回答基本正确,从你的描述看,你使用的是big-endian(网络字节序),所以按intel系列cpu来说,可以这样赋值。

#include <Winsock2.h>

char a[4] = { 0,0,3,0 };

unsigned int b = ntohl ( *( (unsigned int*) a) );

或者

unsigned int b = MAKELPARAM(MAKEWORD(a[3],a[2]), MAKEWORD(a[1], a[0]));

hoodlum1980 | 园豆:559 (小虾三级) | 2012-04-30 19:36
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册