你能把一个有符号的char数组转换成一个无符号的整数吗

Can you convert a signed char array to an unsigned integer?

本文关键字:一个 转换 无符号 整数 数组 符号 char      更新时间:2023-10-16

我有一个无符号的int,它被转换成一个有符号的char,就像这个

  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;
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]);
不建议将signed转换为unsigned。如果你真的想这样做,你必须手动完成。不容易,AFAIK。

看看这个问题。

相关文章: