如何在 Windows 7 中以本机方式查看文件的二进制内容?(是否可以。)

Sha*_*nce 47 windows-7

我有一个比 500MB 大一点的文件,这导致了一些问题。

我相信问题出在使用的行尾 (EOL) 约定中。我想查看未经解释的原始格式 (1) 的文件,以确认文件的 EOL 约定。

如何使用 Windows 7 内置的内容查看文件的“二进制”?我宁愿避免下载任何额外的东西。

(1) 我和我的同事在文本编辑器中打开了文件,他们按预期显示了行。但是两个文本编辑器都会打开具有不同 EOL 约定的文件并自动解释它们。(TextEdit 和 Emacs 24.2。对于 Emacs,我head -c4096在 linux 机器上创建了一个只有前 4K 字节的第二个文件,并从我的 windows 盒子中打开了它。

我试图在 Emacs 中使用十六进制模式,但是当我进入十六进制模式并返回文本模式时,缓冲区的内容发生了变化,在每行的末尾添加了一个可见的 ^M,所以我不是相信此刻。

我相信问题可能出在所使用的行尾字符上。我和我的同事的编辑尝试 (1) 只是自动识别行尾约定并向我们展示行。并且根据其他证据,我相信 EOL 约定只是回车。(2) 只返回。

要了解文件中的实际内容,我想查看文件的二进制内容,或者至少是文件的几千个字节,最好是十六进制,尽管我可以使用十进制或八进制。只是一个零会很难看。

更新

除了建议之外DEBUG,以下所有答案都在某种程度上起作用。我已经投票赞成每一个都有帮助。我的问题格式不正确。在测试每个建议的解决方案时,我发现我真的想要并排查看十六进制和文本内容,并且我希望它是当我将光标放在某个东西上时的东西,字节值或文本字符,匹配的东西另一面将被突出显示。

当 Emacs hexl-mode 开始“正常”工作时,我实际上解决了我的问题。所以我最终没有使用任何这些答案,只测试它们。(真的应该调查奇怪的 Emacs 行为并提交错误报告。)

小智 87

如果你有powershell 5.0或更高版本,你可以使用powershell内置函数Format-Hex

PS:21 C:\Temp >Format-Hex application.exe

            0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F

00000000   42 4D 5E 00 00 00 00 00 00 00 36 00 00 00 28 00  BM^.......6...(. 
00000010   00 00 0A 00 00 00 01 00 00 00 01 00 20 00 00 00  ............ ... 
00000020   00 00 00 00 00 00 C4 0E 00 00 C4 0E 00 00 00 00  ......Ä...Ä..... 
00000030   00 00 00 00 00 00 B7 59 71 FF B7 59 71 FF B7 59  ......•Yq.•Yq.•Y 
00000040   71 FF B7 59 71 FF B7 59 71 FF B7 59 71 FF B7 59  q.•Yq.•Yq.•Yq.•Y 
00000050   71 FF B7 59 71 FF B7 59 71 FF B7 59 71 FF        q.•Yq.•Yq.•Yq.
Run Code Online (Sandbox Code Playgroud)

  • 坦率地说,我很惊讶这不是最佳答案。这是使用 Windows 中的内置工具执行此操作的正确方法。如果要将输出写入文件,可以使用 >Format-Hex application.exe > out.txt (9认同)
  • 根据 JamieSee 的说法,它显然是直到 powershell 5.0 才添加的。 (2认同)

wmz*_*wmz 31

内置,快速而肮脏:开始powershell,执行:

gc -encoding byte -TotalCount 100 "your_file_path" |% {write-host ("{0:x}" -f $_) -noNewline " "}; write-host   
Run Code Online (Sandbox Code Playgroud)

TotalCount是您要从文件中读取的字节数。

谷歌 'powershell hexdump' 以获得更完善/可用的版本。

如果您有 Windows 资源工具包工具(并非完全内置,但已关闭),您还可以使用名为list.exe. 这是一个带有十六进制模式的小型编辑器。专为处理大文件而设计:

列表文本文件工具(List)是一种命令行工具,用于显示和搜索一个或多个文本文件。与其他文本显示工具不同,List 在打开文件时不会将整个文件读入内存。它允许用户以十六进制格式编辑文本文件。

List 可用于远程显示文本或日志文件,也可用于管理员担心系统性能下降的服务器。

  • 不错,简单,已经安装。我将格式更改为 write-host ("{0:X2}" 以强制 0x0A 显示为 "0A" 而不是 "A",大写的 2 代表 2 位数字,因为这就是我喜欢的方式 (2认同)

Dan*_*cks 15

你需要一个“十六进制编辑器”。我多年来一直使用“Hex Editor Neo”,它非常好。它有免费和付费版本。(而且我确定还有其他类似的工具可用。)

  • 我曾问过如何,除了 Windows 7 之外没有任何东西,因为我不喜欢添加其他程序,因为 1) 许多安装方式我拥有的权限不允许。2)有些看起来很狡猾。也就是说,Hex Editor Neo 看起来是一个很好的推荐。+1 (5认同)

spa*_*rks 11

这也适用于 XP 之后的所有内容:

certutil -encodehex MyProgram.exe MyProgram.txt

XP 需要 Windows Server 2003 管理工具包从这里:

https://www.microsoft.com/en-us/download/details.aspx?id=16770


Jay*_*van 7

HxD 是一个便携式的十六进制编辑器,这意味着不需要安装,只不过是一个单独的 exe 文件。

http://mh-nexus.de/en/hxd/

另一个类似的便携选项是 Frhed:

http://frhed.sourceforge.net/en/screenshots/


Sco*_*ott 6

将文件复制到带有.COM扩展名的名称,其中基本名称不超过八个字符。跑

DEBUG 你的文件名

它会给出一个 ' -' 提示。类型

DEnter

反复d在时间isplay文件128个字节。类型

D 地址 Enter

显示从address开始的 128 个字节,必须以十六进制键入,其中文件的开头是地址 100。键入

D 地址1地址2 Enter

地址1地址2 显示。类型

D 地址 LNUM Enter

显示从address开始的num个字节(长度)。  num也以十六进制输入。使用戒烟。Q

例如,

C:\Users\scott\Documents> debug thispost.com
-d
0BE4:0100  43 6F 70 79 20 74 68 65-20 66 69 6C 65 20 74 6F   Copy the file to
0BE4:0110  20 61 20 6E 61 6D 65 20-77 69 74 68 20 61 20 2E    a name with a .
0BE4:0120  43 4F 4D 20 65 78 74 65-6E 73 69 6F 6E 2C 20 77   COM extension, w
0BE4:0130  68 65 72 65 20 74 68 65-20 62 61 73 65 20 6E 61   here the base na
0BE4:0140  6D 65 20 69 73 20 6E 6F-20 6C 6F 6E 67 65 72 20   me is no longer
0BE4:0150  74 68 61 6E 20 65 69 67-68 74 20 63 68 61 72 61   than eight chara
0BE4:0160  63 74 65 72 73 2E 0D 0A-52 75 6E 20 44 45 42 55   cters...Run DEBU
0BE4:0170  47 20 2A 79 6F 75 72 5F-66 69 6C 65 6E 61 6D 65   G *your_filename
-d
0BE4:0180  2A 0D 0A 49 74 20 77 69-6C 6C 20 67 69 76 65 20   *..It will give
0BE4:0190  61 20 27 2D 27 20 70 72-6F 6D 70 74 2E 0D 0A 54   a '-' prompt...T
0BE4:01A0  79 70 65 20 44 20 45 6E-74 65 72 20 72 65 70 65   ype D Enter repe
0BE4:01B0  61 74 65 64 6C 79 20 74-6F 20 2A 2A 64 2A 2A 69   atedly to **d**i
0BE4:01C0  73 70 6C 61 79 20 74 68-65 20 66 69 6C 65 20 31   splay the file 1
0BE4:01D0  32 38 20 62 79 74 65 73-20 61 74 20 61 20 74 69   28 bytes at a ti
0BE4:01E0  6D 65 2E 0D 0A 54 79 70-65 20 44 20 5F 61 64 64   me...Type D _add
0BE4:01F0  72 65 73 73 5F 20 74 6F-20 64 69 73 70 6C 61 79   ress_ to display
-d 200 L16
0BE4:0200  20 31 32 38 20 62 79 74-65 73 20 73 74 61 72 74    128 bytes start
0BE4:0210  69 6E 67 20 61 74                                 ing at
-
Run Code Online (Sandbox Code Playgroud)

  • 不幸的是,如果文件大于 64KB(.COM 的最大值),这将不起作用。(它必须适合从偏移 100h 开始的段。) (5认同)
  • @Shannon debug 是 DOS 的一部分,因此,如果您使用的是 x64,则它不存在。 (3认同)

sgm*_*ore 6

由于 Windows 7 内置了 dotnet 框架 3.5,您将内置 C# 编译器,因此您可以获取例如来自http://illegalargumentexception.blogspot.co.uk/2008/04/c-的列表- file-hex-dump-application.html然后编译使用

  \windows\Microsoft.NET\Framework\v3.5\csc printhex.cs 
Run Code Online (Sandbox Code Playgroud)

并且您应该最终得到一个应显示十六进制和 ascii 字符的 printhex.exe。