byte - Hexdump:在字节和两字节十进制之间转换
问题描述
当我hexdump
在没有选项的文件上使用时,我得到一排十六进制字节:
cf fa ed fe 07 00 00 01 03 00 00 80 02 00 00 00
当我hexdump -d
在同一个文件上使用时,相同的数据显示在所谓的两字节十进制分组中:
64207 65261 00007 00256 00003 32768 00002 00000
所以我在这里想弄清楚的是如何在这两种编码之间进行转换。cf
和fa
十进制分别是207
和250
。这些数字如何组合起来64207
?
额外问题:使用这些分组有什么好处?八进制显示使用 16 组三位数字,为什么不使用与十进制显示相同的东西呢?
解决方案
正如@georg 所评论的那样。
0xfa * 256 + 0xcf == 0xfacf == 64207
转换正是这样工作的。
所以,如果你看到man hexdump
:
-d, --two-bytes-decimal Two-byte decimal display. Display the input offset in hexadecimal, followed by eight space-separated, five-column, zero-filled, two-byte units of input data, in unsigned decimal, per line.
因此,例如:
00000f0 64207 65261 00007 00256 00003 32768 00002 00000
这里,00000f0
是一个十六进制偏移量。
后跟输入数据的两个字节单元,例如:64207
十进制(前 16 位 - 即文件的两个字节)。
转换(在您的情况下):
cf fa
----> 两字节单元(字节顺序取决于您的架构)。
fa * 256 + cf = facf
---->适当地----> 0xfacf
(重新排序)
而 decoxfacf
是64207
.
额外问题:使用三位数字显示八进制数是一种惯例(与十六进制和十进制不同),因此它对每个字节使用三元组。
推荐阅读
- linux - BPF 过滤器失败
- html - CSS Gallery 滑块问题
- python-3.x - pandas:使用单独数据框中一个单元格的值填充数据框列中的所有行
- python - 在 Python 中将数据保存到 JSON 文件时出错
- javascript - 将日期从 html 表单发送到 Google 日历等
- ios - UIScrollView 不应该使用不相关的 UIViewPropertyAnimator
- xaml - VisualStateManager 中的状态名称是否有意义?
- sql - SQL 获取产品和消息分组依据
- mysql - 如何根据表 A 中的值将值插入表 B 中的列
- python - Tkinter:tk.Text 小部件中的高度/宽度缩放问题