我試圖將4個字節轉換爲使用C++的整數。使用C++將四個字節轉換爲整數
這是我的代碼:
int buffToInteger(char * buffer)
{
int a = (int)(buffer[0] << 24 | buffer[1] << 16 | buffer[2] << 8 | buffer[3]);
return a;
}
上面的代碼工作在幾乎所有情況下,例如: 當我的緩衝區:"[\x00, \x00, \x40, \x00]"
的代碼將返回16384
預期。
但是,當緩衝區填充:"[\x00, \x00, \x3e, \xe3]"
時,代碼將無法按預期方式工作,並將返回"ffffffe1"
。
有誰知道爲什麼會發生這種情況?
「..代碼將無法按預期工作」:您的代碼*不會按預期工作(因爲我期望這種行爲有符號的字節值)。 – usr2564301
@Jongware爲什麼它返回ffffffe1而不是16102?你能解釋一下嗎? –
@ i486問題不在endians中。 – SashaMN