Format-Hex
将文件或其他输入显示为十六进制。
语法
Format-Hex
[-Path] <string[]>
[<CommonParameters>]
Format-Hex
-LiteralPath <string[]>
[<CommonParameters>]
Format-Hex
-InputObject <Object>
[-Encoding <string>]
[-Raw]
[<CommonParameters>]
说明
Format-Hex
cmdlet 将文件或其他输入显示为十六进制值。 若要确定输出中的字符的偏移量,请将行最左侧的数字与该字符所在列顶部的数字相加。
Format-Hex
cmdlet 可以帮助确定损坏的文件或可能没有文件扩展名的文件的文件类型。 可以运行此 cmdlet,然后读取十六进制输出以获取文件信息。
在文件中使用 Format-Hex
时,cmdlet 将忽略换行符,并在一个字符串中返回文件的全部内容,并保留换行符。
示例
示例 1:获取字符串的十六进制表示形式
此命令返回字符串的十六进制值。
'Hello World' | Format-Hex
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00000000 48 65 6C 6C 6F 20 57 6F 72 6C 64 Hello World
字符串 Hello World 将通过管道向下发送到 Format-Hex
cmdlet。 Format-Hex
的十六进制输出显示字符串中每个字符的值。
示例 2:从十六进制输出查找文件类型
此示例使用十六进制输出来确定文件类型。 该 cmdlet 显示文件的完整路径和十六进制值。
若要测试以下命令,请在本地计算机上复制现有 PDF 文件并将复制的文件重命名为 File.t7f。
Format-Hex -Path .\File.t7f
Path: C:\Test\File.t7f
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00000000 25 50 44 46 2D 31 2E 35 0D 0A 25 B5 B5 B5 B5 0D %PDF-1.5..%????.
00000010 0A 31 20 30 20 6F 62 6A 0D 0A 3C 3C 2F 54 79 70 .1 0 obj..<</Typ
00000020 65 2F 43 61 74 61 6C 6F 67 2F 50 61 67 65 73 20 e/Catalog/Pages
Format-Hex
cmdlet 使用 Path 参数指定当前目录 File.t7f
中的文件名。 文件扩展名 .t7f
不常见,但十六进制输出 %PDF
显示它是 PDF 文件。
示例 3:显示原始十六进制输出
默认情况下,Format-Hex
选择数值数据类型的紧凑输出:如果值足够小,则使用单字节或双字节序列。 Raw 参数停用此行为。
PS> 1,2,3,1000 | Format-Hex
Path:
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00000000 01 02 03 E8 03 ...è.
PS> 1,2,3,1000 | Format-Hex -Raw
Path:
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00000000 01 00 00 00 02 00 00 00 03 00 00 00 E8 03 00 00 ............è...
请注意输出的差异。 Raw 参数将数字显示为 4 字节值,其类型为 Int32。
参数
-Encoding
指定数组的编码。 这仅适用于 [string]
输入。 该参数对数值类型没有影响。 默认值为 ASCII
。
此参数的可接受值如下所示:
Ascii
使用 ASCII(7 位)字符集。BigEndianUnicode
将 UTF-16 与 big-endian 字节顺序配合使用。Unicode
将 UTF-16 与 little-endian 字节顺序配合使用。UTF7
使用 UTF-7。UTF8
使用 UTF-8。UTF32
将 UTF-32 与 little-endian 字节顺序配合使用。
输入中的非 ASCII 字符作为文本 ?
字符输出,这会导致信息丢失。
Type: | String |
Accepted values: | ASCII, BigEndianUnicode, Unicode, UTF7, UTF8, UTF32 |
Position: | Named |
Default value: | ASCII |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
指定要设置格式的对象。 输入一个包含对象的变量,或键入可获取对象的命令或表达式。
仅支持某些标量类型。[system.io.fileinfo]
支持的标量类型包括:
[string]
[byte]
[int]
,[int32]
[long]
,[int64]
Type: | Object |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-LiteralPath
指定文件的完整路径。 LiteralPath 的值严格按照所键入的形式使用。 此参数不接受通配符。 若要指定多个文件路径,请用逗号分隔路径。 如果 LiteralPath 参数包括转义符,请将其括在单引号中。 PowerShell 不会将单引号中的任何字符解释为转义序列。 有关详细信息,请参阅 about_Quoting_Rules。
Type: | String[] |
Aliases: | PSPath |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Path
指定文件的路径。 使用句点 (.
) 来指定当前位置。 接受通配符 (*
),它可用于指定某个位置中的所有项目。 如果 Path 参数包括转义符,请将其括在单引号中。 若要指定多个文件路径,请用逗号分隔路径。
Type: | String[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-Raw
默认情况下,Format-Hex
选择数值数据类型的紧凑输出:如果值足够小,则使用单字节或双字节序列。 Raw 参数停用此行为。
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
输入
可以通过管道将字符串传递给此 cmdlet。
输出
此 cmdlet 返回 ByteCollection。 此对象表示字节的集合。 它包含的方法可将字节的集合转换为格式化(如同 Format-Hex
返回的输出的每一行)的字符串。 如果指定 Path 或 LiteralPath 参数,则该对象还包含其中含有每个字节的文件的路径。
备注
Windows PowerShell 包含 Format-Hex
的以下别名:
fhx
输出的最右列尝试将字节呈现为字符:
通常,每个字节都被解释为一个 Unicode 代码点,这意味着:
- 可打印 ASCII 字符始终正确呈现
- 多字节 UTF-8 字符永远不会正确呈现
- 仅当 UTF-16 字符的高位字节恰好为
NUL
时,UTF-16 字符才能正确呈现。