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

将管道向下发送到 cmdlet 的字符串 Format-HexFormat-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 类型为 true。

参数

-Encoding

指定输出的编码。 这仅适用于 [string] 输入。 该参数对数值类型没有影响。 默认值为 ASCII

此参数的可接受值如下所示:

  • Ascii 使用 ASCII(7 位)字符集。
  • BigEndianUnicode 使用具有 big-endian 字节顺序的 UTF-16。
  • Unicode 将 UTF-16 与 little-endian 字节顺序一起使用。
  • UTF7 使用 UTF-7。
  • UTF8 使用 UTF-8。
  • UTF32 将 UTF-32 与 little-endian 字节顺序一起使用。

输入中的非 ASCII 字符作为文本 ? 字符输出,从而导致信息丢失。

类型:String
接受的值:ASCII, BigEndianUnicode, Unicode, UTF7, UTF8, UTF32
Position:Named
默认值:ASCII
必需:False
接受管道输入:False
接受通配符:False

-InputObject

指定要设置格式的对象。 输入包含对象或键入获取对象的命令或表达式的变量。

仅支持某些 标量 类型和 [System.IO.FileInfo]

支持的标量类型包括:

  • [string]
  • [byte]
  • [int][int32]
  • [long][int64]
类型:Object
Position:Named
默认值:None
必需:True
接受管道输入:True
接受通配符:False

-LiteralPath

指定文件的完整路径。 LiteralPath 的值与类型化完全相同。 此参数不接受通配符。 若要指定文件的多个路径,请使用逗号分隔路径。 如果 LiteralPath 参数包含转义字符,请将路径括在单引号中。 PowerShell 不会将单引号字符串中的任何字符解释为转义序列。 有关详细信息,请参阅 about_Quoting_Rules

类型:String[]
别名:PSPath
Position:Named
默认值:None
必需:True
接受管道输入:False
接受通配符:False

-Path

指定文件的路径。 使用点(.)指定当前位置。 接受通配符(*),可用于指定位置中的所有项。 如果 Path 参数包括转义字符,请将路径括在单引号中。 若要指定文件的多个路径,请使用逗号分隔路径。

类型:String[]
Position:0
默认值:None
必需:True
接受管道输入:False
接受通配符:True

-Raw

默认情况下,Format-Hex 选择压缩数字数据类型的输出:如果值足够小,则使用单字节或双字节序列。 Raw 参数停用此行为。

类型:SwitchParameter
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

输入

String

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

输出

ByteCollection

此 cmdlet 返回 ByteCollection。 此对象表示字节集合。 它包括将字节集合转换为字符串的方法,这些字符串的格式类似于 Format-Hex返回的每行输出。 如果指定 PathLiteralPath 参数,该对象还包含包含每个字节的文件的路径。

备注

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

  • fhx

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

通常,每个字节解释为 Unicode 码位,这意味着:

  • 始终正确呈现可打印 ASCII 字符
  • 多字节 UTF-8 字符永远不会正确呈现
  • 仅当出现高阶字节时,UTF-16 字符才会正确呈现 NUL