我需要一個C++函數,它返回解釋爲bigendian long的四個連續字節的值。指向第一個字節的指針應該更新爲指向最後一個字節。我曾嘗試下面的代碼:在C++中轉換long-endian?
inline int32_t bigendianlong(unsigned char * &p)
{
return (((int32_t)*p++ << 8 | *p++) << 8 | *p++) << 8 | *p++;
}
例如,如果p指向00 00 00 A0我希望的結果是160,但它是0。何以見得?
[ntohl()](http://pubs.opengroup.org/onlinepubs/9699919799/functions/ntohl.html)呢? –
[將字節數組(char數組)轉換爲整數類型(short,int,long)]的可能重複(http://stackoverflow.com/questions/13678166/converting-byte-array-char-array-to-an -integer-type-short-int-long) –
對'p'進行了多次修改,這些修改沒有相對於對方進行排序。這是未定義的行爲。 –