问题标签 [hexdump]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 现成的 C++ 十六进制转储代码
我经常使用网络和串行通信软件,因此我经常需要编写代码来显示或记录数据包的十六进制转储。
每次我这样做时,我都会从头开始编写另一个十六进制转储例程。我即将再次这样做,但我想我会在这里问:在某处是否有任何适用于 C++ 的免费十六进制转储代码?
我想要的功能:
- 每行 N 个字节(其中 N 可以以某种方式配置)
- 十六进制旁边的可选 ASCII/UTF8 转储
- 可配置缩进、每行前缀、每行后缀等。
- 最小的依赖关系(理想情况下,我希望代码都在头文件中,或者是我可以粘贴的片段)
编辑: 澄清:我正在寻找可以轻松放入我自己的程序以写入标准错误、标准输出、日志文件或其他此类输出流的代码。我不是在寻找命令行十六进制转储实用程序。
hex - 任何用于将十六进制转储转换为人类可读形式的通用实用程序或库?
我经常与各种设备进行串行通信,因此我经常需要分析日志文件中的十六进制转储。目前,我通过查看转储、查看协议规范并写下结果来手动执行此操作。然而,这是乏味且容易出错的,尤其是当消息包含数百个字节并且包含大端和小端数据、ASCII、Unicode、压缩、CRC、. . . .
我编写了一些 Python 脚本来帮助处理更常见的情况。但是有很多协议要处理,花时间编写自定义脚本是没有意义的,除非我知道我会有很多转储要分析。
我想要的是某种可以自动执行此活动的实用程序。因此,例如,如果我有这样的文本十六进制转储:
以及消息格式的某种描述,如下所示:
我会得到这样的输出:
基于硬件的协议分析器通常具有执行此类操作的精美功能,但我需要使用文本日志文件。
是否存在任何此类实用程序或库?
自从我设置赏金以来,已经出现了一些好的答案。我猜赏金工作!
Wireshark 和 HexEdit 看起来都很有前途;我会看看那些,并且可能会将赏金奖励给适合我需要的人。但我仍然对其他想法持开放态度。
c++ - 从内存位置进行十六进制转储
我使用指针来指定某种“共享内存”,用于在不同进程/线程之间交换数据。现在我想要共享缓冲区内容的十六进制转储。有谁知道这是怎么做到的吗?
谢谢,
unix - Unix hexdump 中的字节顺序
以下 *nix 命令将 IP 和端口 (127.0.0.1:80) 的十六进制表示形式通过管道传输到 hexdump 命令。
-e 标志允许任意格式解析输入。在这种情况下,我们将 IP 的前三个八位字节解析为无符号十进制数,后跟一个点。最后的八位字节也被解析为无符号十进制,但后面跟着一个冒号。最后——这就是问题所在——端口的 2 个字节被解析为一个无符号十进制数,后跟一个换行符。
根据执行此命令的系统的字节顺序,结果会有所不同。大端系统将正确显示端口 80;而小端系统将显示端口 20480。
有什么方法可以操作 hexdump 以了解字节顺序,同时仍然允许通过 -e 进行任意格式规范?
c - 使用 hexdump 查找静态变量
我正在为软件开发的安全方面的讲座考试做准备。我想知道是否总是可以从带有 hexdump 的二进制文件中读取静态字符数组的值?
如果不是取决于什么因素,我是否可以使用 hexeditor 读取它的值?
谢谢,
hexdump - 十六进制转储混乱
我正在使用 Unix hexdump 实用程序。我的输入文件是 UTF-8 编码的,包含一个字符ñ
,它是C3 B1
十六进制的 UTF-8。
嗯?这表明B1 C3
- 与我的预期相反!有人可以解释吗?
为了获得预期的输出,我这样做:
我在想我理解编码系统。
perl - perl 中的十六进制转储解析
我在一个文件中有一个消息的十六进制转储,我想将它放在一个数组中,这样我就可以对其执行解码逻辑。
我想知道这是否是解析看起来像这样的消息的更简单方法。
37 39 30 35 32 34 35 34 3B 32 31 36 39 39 33 34 35 35
32 31 31 31 36 39 39 33 34 36 00 08 408 40 00 00 00 00 15
6C 71 34 34 34 34 73 69 69 6D 31 5F 33 33 33 30 33 30 33 31 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 01 28 40 00 00 15 74 65 6C 63 6F 72 64 69
74 65 6C 63 6F 72 64 69
请注意,任何行上的数据最多为 16 个字节。但是任何行也可以包含更少的字节(最小:1)
有没有一种漂亮而优雅的方式,而不是在 perl 中一次读取 2 个字符?
java - 如何向外部设备发送数据
我有一个串行设备通过 com 端口连接到我的计算机。我想将十六进制数据发送到此设备,将数据发送到设备的最佳方法是什么。
例如我有这个数据-
我现在在做的是——
我面临的问题是 - 串行设备没有响应?当我通过软件发送相同的十六进制字符串时,终端正在响应。难道我做错了什么?
这是代码的一部分-
嗨,伙计们,我终于自己发现了如何正确地做到这一点。我没有以正确的格式发送数据。我在使用其他软件监控串行数据交换时发现。
向串行设备发送数据的最佳方式是 - ASCII DATA --> HEX STRING --> UNSIGNED BYTE
emacs - 以 hexl 模式查看 gzip 存档的内容
我想编写一个类似的函数,hexl-find-file
它将打开一个 gzip 压缩文件并以 hexl 模式显示内容。我该怎么做?
c - xxd 二进制转储问题
上面的输出是 xxd 所期望的格式,还是右侧出现的奇怪字符表明我做错了什么?
我正在尝试序列化一个简单的链表,这就是我得到的输出。未能从序列化中删除标记字符“\0”会导致错误吗?