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-Hexcmdlet。 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

输入

String

可以通过管道将字符串传递给此 cmdlet。

输出

ByteCollection

此 cmdlet 返回 ByteCollection。 此对象表示字节的集合。 它包含的方法可将字节的集合转换为格式化(如同 Format-Hex 返回的输出的每一行)的字符串。 如果指定 Path 或 LiteralPath 参数,则该对象还包含其中含有每个字节的文件的路径。

备注

Windows PowerShell 包含 Format-Hex 的以下别名:

  • fhx

输出的最右列尝试将字节呈现为字符:

通常,每个字节都被解释为一个 Unicode 代码点,这意味着:

  • 可打印 ASCII 字符始终正确呈现
  • 多字节 UTF-8 字符永远不会正确呈现
  • 仅当 UTF-16 字符的高位字节恰好为 NUL 时,UTF-16 字符才能正确呈现。