【问题标题】:Transforming a binary file into a decimal format using bash, how to?使用bash将二进制文件转换为十进制格式,如何?
【发布时间】:2015-01-28 19:53:54
【问题描述】:

我的程序生成了一个二进制文件,但我需要比较它的十进制内容以检查它们是否符合我的要求。但是,我似乎找不到使用 bash 执行此操作的方法,是否有任何代码可以让我完成此操作?每当我使用 sublime text 之类的程序打开它时,我都会以 HEX 形式获得内容;但是,我不是在寻找那个。

5249 4646 5200 0000 5741 5645 666d 7420
1000 0000 0100 0200 44ac 0000 10b1 0200
0400 1000 6461 7461 2e00 0000 0200 0200
0200 0300 0300 0900 0900 0900 0c00 0c00
1400 1400 1400 1800 1800 0c00 0c00 0c00
0600 0600 0200 0200 0200 

【问题讨论】:

  • “十进制内容”到底是什么意思?如果一次转换 4 位,则得到一个十六进制数字,如果一次转换 3 位,则得到一个八进制数字。
  • .... 上面的评论没有任何意义。抱歉,数字系统不能那样工作。
  • 您是否尝试过在文件中使用“字符串”?老实说,这看起来像一个文本文件,而不是二进制文件,如果你可以将它放入文本编辑器并获取数字和字母。所以“字符串”可能不起作用。您可能需要循环并回显成十进制格式。这是我找到的一个快速教程:linuxcommando.blogspot.com/2008/04/…
  • 文件是wav文件
  • 为了获得更好的答案,请编辑您的问题以更清楚地解释您的用例和所需的解决方案。提供您所看到的内容和您希望看到的示例将有助于社区为您提供帮助。

标签: linux bash file unix decimal


【解决方案1】:

十进制字节转储:

od -t u1 filename

对于 2 字节十进制字的转储:

od -t u2 filename

【讨论】:

    【解决方案2】:

    在 bash 中,只需键入

    xxd -b yourbinaryfile
    

    【讨论】:

    • 这在二进制中工作,有什么命令可以让我将这些转换为十进制吗?
    • 我想我不明白你的小数是什么意思。二进制文件只是...二进制文件。对我来说十进制意味着:从 0 到 9 的数字。它们是通用语言中使用的字符,并且在使用代码表(例如 UTF8)转换时具有十六进制表示。您能否阐明二进制文件的内容并举例说明您希望它如何表示?
    • @NonPlusUltra 十六进制:0xff,二进制:0b11111111,十进制:255。所以输出应该是 0 到 256 之间的数字。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-28
    • 2014-02-06
    • 2011-02-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多