簡體   English   中英

您可以將帶符號的char數組轉換為無符號的整數嗎?

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

我有一個無符號的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]);

signedunsigned是不明智的。 如果您確實想這樣做,則必須手動進行。 不容易,AFAIK。

看看這個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM