2
我想將文件中的十六進制數轉換爲整數。
字符串看起來是這樣的:
\0\0\x05\xa0
這應該是1440。如果我嘗試:
int i = '\x05'
我得到5
。C將十六進制值「 xHH」轉換爲整數
但是,如果我這樣做\xa0
我得到-96
。
任何想法如何正確地轉換字符串?
我想將文件中的十六進制數轉換爲整數。
字符串看起來是這樣的:
\0\0\x05\xa0
這應該是1440。如果我嘗試:
int i = '\x05'
我得到5
。C將十六進制值「 xHH」轉換爲整數
但是,如果我這樣做\xa0
我得到-96
。
任何想法如何正確地轉換字符串?
這看起來像一個big-endian號碼。
假設你有四個(沒有,如果你表現出的字節串12,我假設他們是二進制字節)的unsigned char data[4]
一個字節數組,你應該能夠像這樣轉換:
const unsigned int x = (data[0] << 24) | (data[1] << 16) |
(data[2] << 8) | data[3];
如果我們在您的數據插入:
以上變爲:
const unsigned int x = (0 << 24) | (0 << 16) | (5 << 8) | 160;
,正如預期的那樣,這只是256 * 5 | 160
= 1280 | 160
= 1440
。
不錯!謝謝! –
這是一個實際的文本字符串,或者在一個可以顯示二進制數據的程序中查看的數據嗎? –
另外,'-96'是'0xa0'的有符號值。 –
它實際上是一個PNG頭。我寫了一個簡單的c程序,可以從PNG圖像中讀取大小。 –