endianness - 字节顺序。这些字节将如何表示?
问题描述
给定十六进制字节 0x12345678,使用 big-endian 顺序将字节复制到内存。
地址内容
0x00400003 0x78
0x00400002 0x56
0x00400001 0x34
0x00400000 0x12
那正确吗?
解决方案
在 big-endian 中,最重要的字节 ( 12
) 应该在最前面,其余的应该按重要性降序排列。
如果给定的数字是大端字节序(可能是),那么您的解决方案是正确的,因为它看起来像这样:
00400000|00400001|00400002|00400003
--------+--------+--------+--------
12 | 34 | 56 | 78
如果您必须以小端序排列字节,则排列将相反:
00400000|00400001|00400002|00400003
--------+--------+--------+--------
78 | 56 | 34 | 12
请注意,在这种安排中,只有字节的顺序颠倒了,但半字节的顺序(4 位区域 = 十六进制数字)保持不变。
您可以在此 Wikipedia 页面中阅读有关字节序的更多信息。
推荐阅读
- laravel - 调用 role::create 和 permission::create 时捕获异常
- r - R中Wilcoxon秩和检验中的警告
- javascript - API XML 到 JSON 格式并返回到 XML
- c++ - C++中如何处理指针、数据类型初始化和多指针声明?
- leaflet - 在传单弹出窗口上附加谷歌图表
- python - 列表中 DataFrame 的组合
- javascript - 如何在 fetch async 加载我的数据时在 Javascript 中添加微调器?
- javascript - 如何从 js (QML) 设置嵌套组件的属性?
- javascript - 无法使用相同代码在两个地方显示错误
- spring - 为什么我不能在 Spring Boot 中使用 YAML 加载属性 POJO?