【发布时间】:2019-02-03 03:38:44
【问题描述】:
我正在寻找一种将表示十六进制值的 ascii 数据转换为二进制文件的方法。 详细地说,通过将十六进制值转换为字符串来记录串行端口上与连接的设备(在本例中为 GPS 接收器)的所有通信。 我正在寻找一种将这些数据转换回二进制数据的方法。 基本上,我可以通过运行 HxD 编辑器并通过从日志中提取的字符串来执行此操作。 HxD representation of 2 line logged
我想做的是能够在命令行上执行此操作,而无需手动将测试复制/粘贴到十六进制编辑器。
这些行总是从 B562 开始,后面跟着值,例如06 在这种情况下应该导致输出(表示为字符串)'µb'。
作为示例,我正在编辑一个包含我要转换的数据的文件,以及由 HxD 编辑器编写的结果文件。这个生成的文件可以通过 u.blox.com 提供的一个名为 u-center 的工具打开和重放。它显示正在记录的卫星信息... 输入文件log01.ublox.tmp 输出文件log01.ubx
感谢您的支持。 - 瓦西里
【问题讨论】:
-
欢迎使用 Stackoverflow。如果您提供输入文件的示例和预期输出的明确说明,您的问题会更容易理解和回答。例如,输入记录之间的分隔符是什么?换行符?你想要输出二进制值之间的分隔符是什么?换行符?没有?您的输入(输出)值有多少字节?什么字节序?等等。
-
感谢您的提示,我编辑了问题并添加了可用于此转换的共享文件
-
C 可能会更好。
-
我知道在 C 中这不是问题,但我也可以使用 HxD 来代替开始编码。为了能够使用命令行工具,我只是询问了 Linux 发行版中可用的标准工具是否存在这种方式,或者在 cygwin 中是否存在更好的 :)