我需要一个 C++ 函数,它返回解释为 bigendian long 的四个连续字节的值。指向第一个字节的指针应该更新为指向最后一个字节之后。我尝试了以下代码:
inline int32_t bigendianlong(unsigned char * &p)
{
return (((int32_t)*p++ << 8 | *p++) << 8 | *p++) << 8 | *p++;
}
例如,如果 p 指向 00 00 00 A0,我希望结果是 160,但它是 0。怎么会?