Format-Hex

将文件或其他输入显示为十六进制。

语法

Format-Hex
      [-Path] <string[]>
      [-Count <long>]
      [-Offset <long>]
      [<CommonParameters>]
Format-Hex
      -LiteralPath <string[]>
      [-Count <long>]
      [-Offset <long>]
      [<CommonParameters>]
Format-Hex
      -InputObject <psobject>
      [-Encoding <Encoding>]
      [-Count <long>]
      [-Offset <long>]
      [-Raw]
      [<CommonParameters>]

说明

cmdlet Format-Hex 将文件或其他输入显示为十六进制值。 若要确定输出中的字符的偏移量,请将行最左侧的数字与该字符所在列顶部的数字相加。

cmdlet Format-Hex 可帮助你确定损坏文件的文件类型或可能没有文件扩展名的文件。 可以运行此 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

cmdlet Format-Hex 使用 Path 参数指定当前目录 File.t7f 中的文件名。 文件扩展名 .t7f 并不常见,但十六进制输出 %PDF 显示它是 PDF 文件。

参数

-Count

这表示要包含在十六进制输出中的字节数。

此参数是在 PowerShell 6.2 中引入的。

Type:Int64
Position:Named
Default value:Int64.MaxValue
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Encoding

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

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

  • ascii:使用 ASCII (7 位) 字符集的编码。
  • bigendianunicode:使用 big-endian 字节顺序以 UTF-16 格式进行编码。
  • oem:使用 MS-DOS 和控制台程序的默认编码。
  • unicode:使用 little-endian 字节顺序以 UTF-16 格式进行编码。
  • utf7:以 UTF-7 格式进行编码。
  • utf8:以 UTF-8 格式进行编码。
  • utf8BOM:使用字节顺序标记 (BOM) 以 UTF-8 格式进行编码
  • utf8NoBOM:以 UTF-8 格式编码,不带字节顺序标记 (BOM)
  • utf32:以 UTF-32 格式进行编码。

从 PowerShell 6.2 开始, Encoding 参数还允许使用已注册代码页的数字 ID (如 -Encoding 1251) 或已注册代码页的字符串名称 () -Encoding "windows-1251" 。 有关详细信息,请参阅 Encoding.CodePage 的 .NET 文档。

Type:Encoding
Accepted values:ASCII, BigEndianUnicode, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Position:Named
Default value:UTF8NoBOM
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InputObject

用于管道输入。 管道输入仅支持来自 Get-ChildItem的管道的某些标量类型和[system.io.fileinfo]实例。

支持的标量类型包括:

  • [string], [char]
  • [byte], [sbyte]
  • [int16], [uint16], [short], [ushort]
  • [int], [uint], [int32], [uint32],
  • [long], [ulong], [int64], [uint64]
  • [single], [float], [double]
Type:PSObject
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, LP
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Offset

这表示从十六进制输出的一部分跳过的字节数。

此参数是在 PowerShell 6.2 中引入的。

Type:Int64
Position:Named
Default value:0
Required:False
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

此参数不再执行任何操作。 保留该脚本是为了实现脚本兼容性。

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 参数,则该对象还包含其中含有每个字节的文件的路径。

备注

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

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

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