![]() |
1
4
For
当您将字符串传递给
如果你想重新解释中的字节
请注意,不同的C实现可能代表
|
![]() |
2
1
正如评论中提到的
如果你想打印这四个字节表示的整数,那么:
所以:
必须说,你永远不应该这样做。字节顺序,甚至大小
|
![]() |
3
1
这里有几件事在起作用。首先,正如Eric指出的那样,您传递的是姓名地址,而不是内容(尽管您会使用%p而不是%d来正确打印)。但是,即使您转换并取消引用参数,以便将该数组的内容解释为整型,它也不一定会打印出与其他类型相同的结果: 某些CPU会乱序存储多字节对象的字节。这被称为 endianness 的代表。英特尔芯片是小端字节序,其中最低有效字节存储在前面(就像大多数其他现代系统一样。我认为苹果过去使用大端字节序芯片,但我不确定)。因此(对于32位无符号整数),0x00112233实际上会存储为{0x33,0x22,0x11,0x00}。
将char数组解释为int时的最后一个问题是
对齐
int不一定允许从内存中的任何点开始。细节因系统而异,但通常T类型的对象需要从地址开始
一
美国。
p.s.在网络数据包中,你确实可以看到大端序表示:由于我们可能想使用与我们不同的端序将int传输到系统,我们首先将其转换为网络端序(大端序)顺序,然后接收系统将其转换成其本机端序。在实践中,这意味着每个系统都会从小字节序转换为大端序,这样接收系统就可以再次将其转换回来,因为没有人再使用大端序表示了。但在这一点上改变标准会带来更多的麻烦。 |
![]() |
Abeezuo · Ruby正则表达式,用于精确包含x个整数的字符串 3 年前 |
![]() |
manOnTheMoon · 对于循环-我只能输入1个整数 3 年前 |
![]() |
grative · 我怎样才能掩盖Swift中的第一个和最后一个角色? 3 年前 |
![]() |
Kaiger Chainer · 将一个元素从list转换为int 3 年前 |
![]() |
MOmo · C++中字符串的最后一个字符使用n后退()和铸造 3 年前 |
![]() |
arka · C语言中奇怪的联合行为 3 年前 |