Consider the following code:
#include <stdio.h>
#include <arpa/inet.h>
int main(int argc, char *argv[]) {
uint16_t num = 123;
if (htons(num) == num) {
printf("big endian\n");
} else {
printf("little endian\n");
}
}
请问这段代码对检查字节序是否有效?我看到很多问题用各种指针/字符技巧来检查它,但我认为这更简单。它的原理是:如果将一个数字转换为网络字节序(大端序),如果它与原始数字相同,则表示您处于大端系统中。否则,您就处于小端系统中。
这个检查中是否存在假设错误?也许网络字节序并不总是大端序,虽然似乎已经标准化了。
htons
及其相关函数的目的正是让用户不必关心字节序问题。在依赖特定字节序的托管环境中编写的代码通常会因设计缺陷而失效。 - too honest for this siteauthorized_keys
文件至noloader,gmail账户。我保留了一台旧的PowerMac与PowerPC在线测试使用。 - jww