将字节数据转换为类似于十六进制编辑器中的字符串输出

4
我正在寻找一种方法,它可以像十六进制编辑器一样返回字节数据的字符串表示形式。 它应该有一个参数byte[],并返回如下的stringLike it should be 这个方法应该处理转义字符、空值,并正确对齐文本。我想在Debug.WriteLine()中使用它。 请帮助我!谢谢!
更新: 好的。谢谢大家。这里有一个可以直接使用的解决方案链接http://illegalargumentexception.blogspot.fr/2008/04/c-file-hex-dump-application.html,由Darin Dimitrov提供。

我认为你需要澄清一下。你有两个答案,虽然都是正确的,但回答了不同的问题。你是想从byte[]中获取十六进制显示还是纯文本?还是两者都要? - vcsjones
@vcsjones 字节数据的字符串表示。myne分析字节并返回字符串。 - Royi Namir
2个回答

2
您可以使用ToString方法:

ToString 方法:

public static string ToString(byte[] buffer)
{
    return BitConverter.ToString(buffer);
}

是的。但我需要每16个字节后面加上ASCII表示。像这样。 41 41 41 41 41 41 41 41 41 41 41 00 41 41 41 41 AAAAAAAAAAA.AAAA 59 59 59 00 59 59 59 59 59 59 59 59 59 59 53 59 YYY.YYYYYYYYYYSY - Nazar Grynko
请尝试访问:http://illegalargumentexception.blogspot.fr/2008/04/c-file-hex-dump-application.html - Darin Dimitrov
@DarinDimitrov 是你的博客吗? - Royi Namir

1

请尝试这个:

  byte[] b1 = ...

  string h = System.Text.Encoding.UTF8.GetString(b1);

这不是所需内容。它将返回一个简单的字符串,其中所有字节都将转换为其字符表示形式。例如:“\r� �\0\a �(C��\a9��s�p��T?�m.K�9 ��y ΪM|” - Nazar Grynko
@NazarGrynko 尝试使用ASCII编码。这个命令应该返回字节的字符串表示。尝试使用System.Text.Encoding.ASCII.GetString(b1);。 - Royi Namir
@NazarGrynko 更改为 ASCII - Royi Namir
是的,我知道。但我需要它的格式与我发布的截图相同。 每行应由16个十六进制字符(b1 [0] .ToString(“X2”))和16个字符(这是Encoding.UTF8.GetString和Encoding.ACSII.GetSting返回的内容)组成。并在行末添加'\n'。 - Nazar Grynko

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接