共用方式為


Format-Hex

以十六進位格式顯示檔案或其他輸入。

Syntax

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>]

Description

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:使用大位元組位元組順序以UTF-16格式編碼。
  • oem:使用 MS-DOS 和控制台程式的預設編碼方式。
  • unicode:使用小位元節順序以UTF-16格式編碼。
  • utf7:以 UTF-7 格式編碼。
  • utf8:以 UTF-8 格式編碼。
  • utf8BOM:使用位元節順序標記 (BOM) ,以 UTF-8 格式編碼
  • utf8NoBOM:以 UTF-8 格式編碼,不含位元組順序標記 (BOM)
  • utf32:以 UTF-32 格式編碼。

從 PowerShell 6.2 開始, Encoding 參數也允許已註冊代碼頁的數值標識符, (例如 -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

用於管線輸入。 管線輸入僅支援特定純量型別和 [system.io.fileinfo] 實例,以便從 Get-ChildItem進行管線。

支援的純量類型如下:

  • [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傳回的每個輸出行。 如果您指定 PathLiteralPath 參數,此物件也會包含其中含有每個位元組的檔案的路徑。

備註

輸出最右邊的數據行會嘗試將位元組轉譯為 ASCII 字元:

一般而言,每個位元組都會解譯為 Unicode 字碼點,這表示:

  • 可列印的 ASCII 字元一律會正確轉譯
  • 多位元組UTF-8字元永遠不會正確轉譯
  • 只有在發生高序位元組時,UTF-16 字元才會 NUL正確轉譯。