strtol可以,参考 http://baike.baidu.com/view/1874375.htm
我看了一下你先要的结果 应该是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 当然这里要考虑大小端问题。
上面的回答基本正确,从你的描述看,你使用的是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]));