gpt4 book ai didi

c - 如何用 C 语言编写 hexdump -C 函数?

转载 作者:行者123 更新时间:2023-11-30 20:19:10 29 4
gpt4 key购买 nike

下面的第一 block 代码是一个示例,展示了当我在 C 中运行 hexdump 命令时我希望输出的样子。Atm,我不知道如何获取 3 列双空格,而且我不知道不知道如何添加 ASCII 表示和“.”对于右侧的非 ASCII 字节。

hexdump -C/etc/passwd

00000000  72 6f 6f 74 3a 78 3a 30  3a 30 3a 72 6f 6f 74 3a  |root:x:0:0:root:|
00000010 2f 72 6f 6f 74 3a 2f 62 69 6e 2f 62 61 73 68 0a |/root:/bin/bash.|
00000020 64 61 65 6d 6f 6e 3a 78 3a 31 3a 31 3a 64 61 65 |daemon:x:1:1:dae|
00000030 6d 6f 6e 3a 2f 75 73 72 2f 73 62 69 6e 3a 2f 62 |mon:/usr/sbin:/b|
00000040 69 6e 2f 73 68 0a 62 69 6e 3a 78 3a 32 3a 32 3a |in/sh.bin:x:2:2:|
00000050 62 69 6e 3a 2f 62 69 6e 3a 2f 62 69 6e 2f 73 68 |bin:/bin:/bin/sh|

这是我的实际输出:

00000000 2f 2a 20 68 65 6c 6c 6f 2e 63 20 2a 2f a. a. 23
00000010 69 6e 63 6c 75 64 65 20 3c 73 74 64 69 6f 2e 68
00000020 3e a. a. 69 6e 74 20 6d 61 69 6e 28 69 6e 74 20
00000030 61 72 67 63 2c 20 63 68 61 72 20 2a 61 72 67 76
00000040 5b 5d 29 a. 7b a. 20 20 70 75 74 73 28 22 48 65
00000050 6c 6c 6f 20 77 6f 72 6c 64 21 5c 6e 22 29 3b a.
00000060 20 20 72 65 74 75 72 6e 20 30 3b a. 7d a.
0000006e

谢谢

最佳答案

I don't know how to get the 3 columns of double spaces

只需在适当的位置发出额外的空格即可。

第一个(在偏移量和第一个八位字节之间)始终存在。如果有的话,第二个在第 8 个八位位组之前发出。第三个也始终存在。

您可以将它们构建到格式字符串中,也可以将它们烘焙到八位位组格式循环中。

I don't know how to add the ASCII representation and "." for non-ASCII of the bytes on the right

粗略地说,通过使用 isprint()然后打印 toprint 而不是 raw 字符

char toprint = isprint(raw) ? raw : '.';

关于c - 如何用 C 语言编写 hexdump -C 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51364168/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com