2012-02-12 42 views
1

我有一個unsigned 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; 
+0

你需要一個'無符號char'陣列。 – 2012-02-12 18:42:03

回答

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]); 
0

轉換signedunsigned是不明智的。如果你確實想這樣做,你必須手動完成。不容易,AFAIK。

看一看this的問題。

相關問題