我有一个unsigned int,它被转换为像这样的签名字符
unsigned int b = 128;
char a[4];
a[0] = b >> 24;
a[1] = b >> 16;
a[2] = b >> 8;
a[3] = b >> 0;
在不知道b
的价值的情况下,我可以取回这个号码吗?对于大于128的数字,下面的方法失败。似乎从数组中取回数字有一些不明确之处。
unsigned int c = 0;
c += a[0] << 24;
c += a[1] << 16;
c += a[2] << 8;
c += a[3];
cout<<c<<endl;
答案 0 :(得分:1)
unsigned int c = ((a[0] << 24) & 0xFF000000U)
| ((a[1] << 16) & 0x00FF0000U)
| ((a[2] << 8) & 0x0000FF00U)
| ( a[3] & 0x000000FFU);
或
unsigned int c = unsigned(a[0]) << 24
| unsigned(a[1]) << 16
| unsigned(a[2]) << 8
| unsigned(a[3]);
答案 1 :(得分:0)
不建议将signed
转换为unsigned
。如果你想这样做,你必须手动完成。不容易,AFAIK。
查看this问题。