我试图将整数写入字节缓冲区。以下代码是否总是以大端格式写入,无论系统的字节顺序如何:
byte[0] = (uint8_t) (val & 0xFF000000) >> 24;
byte[1] = (uint8_t) (val & 0x00FF0000) >> 16;
byte[2] = (uint8_t) (val & 0x0000FF00) >> 8;
byte[3] = (uint8_t) (val & 0x000000FF);
不幸的是,我无法访问htonl()和类似的功能。
答案 0 :(得分:7)
是的,这将正常工作。位移运算符处理抽象数值,而不是它们在硬件寄存器或RAM中的表示方式。 >> N
基本相当于除以2 N 。