【问题标题】:Print first 100 bytes of a binary file as uint8 in Linux在 Linux 中将二进制文件的前 100 个字节打印为 uint8
【发布时间】:2019-08-22 20:36:30
【问题描述】:

以下 Javascript 示例读取并记录用户选择的文件的前 100 个字节(通过文件输入):

var blob = file.slice(0, 100);            

var fileReader = new FileReader();
fileReader.onload = function(event) {
    var arrayBuffer = event.target.result;
    var bytes = new Uint8Array(arrayBuffer);
    console.log('bytes', bytes);
};

fileReader.readAsArrayBuffer(blob);

通过hexdumpod 等Linux 实用程序实现相同功能的等效方法是什么?

更新:我正在寻找 hexdump -d,但生成的是单字节小数,而不是 2 字节小数。

【问题讨论】:

标签: javascript linux


【解决方案1】:

您可以使用hexdump 执行此操作。 hexdump 的格式化语法至少可以说有点奇怪,标准的 man 页面并没有多大帮助。

tl;dr 版本是:

hexdump -n 100 -v -e '/1 "%03d\n"' your-file

如果你不关心前导零,你可以只使用%d

现在是什么意思:

  • -n 100 表示只查看输入的前 100 个字节
  • -v 表示显示每个字节。通常,重复项在输出中折叠为 *
  • -e '/1 "%03d\n"' 是格式字符串(更多内容见下文)

格式字符串由以n/m 指示符开头的“节”组成,指示如何对字节进行计数和分组。 /1 表示输入应以每组 1 个字节为一组进行处理。在计数/分组指示符之后是一个格式字符串,基本上是printf() 格式的样式。

Here is a fairly good explanation of hexdump courtesy of the Suse folks.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-06
    • 1970-01-01
    • 2011-02-21
    • 1970-01-01
    • 2020-03-31
    • 1970-01-01
    • 1970-01-01
    • 2021-10-30
    相关资源
    最近更新 更多