【问题标题】:convert ascii representing hex values to binary data将表示十六进制值的 ascii 转换为二进制数据
【发布时间】: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 中是否存在更好的 :)

标签: bash binary hex ascii


【解决方案1】:

您可以使用以下方法将表示十六进制值的 ASCII 转换为二进制数据:

xxd -r -ps log01.ublox.tmp output.ubx

【讨论】:

  • @laiki 好吧,答案是我发布的,Grant 好心地纠正了我的英语 ;-)。顺便说一句,如果您觉得答案有帮助,请投票给它并通过单击问题旁边的复选标记接受答案。 TIA!
猜你喜欢
  • 2012-11-14
  • 1970-01-01
  • 1970-01-01
  • 2019-11-29
  • 2012-06-26
  • 2015-08-05
  • 2012-01-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多