在这种情况下我是否必须担心字节顺序(整数必须是0-127):
int a = 120;
int b = 100;
int c = 50;
char theBytes[] = {a, b, c};
我认为,由于每个整数都位于自己的字节中,因此我不必担心在系统之间传递字节数组时的Endianess。这也是凭经验制定的。我错过了什么吗?
答案 0 :(得分:6)
字节顺序仅影响单个值中的字节顺序。单个字节不受端序问题的影响,并且数组总是顺序的,因此字节数组在大端和小端架构上是相同的。
请注意,这并不一定意味着仅使用char
将使数据类型100%可移植。例如,结构可能仍然包含依赖于体系结构的填充,并且一个系统可能具有未签名的char
,而另一个系统使用签名(尽管我看到您通过仅允许0-127来回避这一点)。
答案 1 :(得分:3)
不,您不必担心,编译器会生成能够正确转换和赋值的代码。