คุณสามารถใช้ฟังก์ชั่น PowerShell ด้านล่างพร้อมกับได้รับเนื้อหาที่จะเห็น hexdump Get-Content -Encoding Byte 'MyFile.bin' | Format-HexDump
ของเนื้อหาของแฟ้มคือ ใช้เวลาประมาณ 23 วินาทีในการถ่ายโอนไฟล์ 222 KB และหากต้องการผลลัพธ์สามารถเปลี่ยนเส้นทางไปยังไฟล์ข้อความเพื่อตรวจสอบการถ่ายโอนข้อมูลได้ง่ายขึ้น
$encodingAutoCompleter = {
param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters)
$availableEncodings = ([System.Text.Encoding]::GetEncodings() | Select Name, CodePage, DisplayName) + @( [PSCustomObject] @{ CodePage = '20127'; Name = 'ascii'; DisplayName = 'US-ASCII' }, [PSCustomObject] @{ CodePage = '1200'; Name = 'unicode'; DisplayName = 'Unicode' } )
$availableEncodings | ?{ $_.Name.StartsWith($wordToComplete) } | %{ New-Object System.Management.Automation.CompletionResult -ArgumentList $_.Name, $_.Name, 'ParameterValue', "$($_.DisplayName). Code Page $($_.CodePage)." }
}
function Format-BufferText([byte[]] $buffer, [System.Text.Encoding] $displayEncoding, [switch] $useControlPictures)
{
$bufferChars = $displayEncoding.GetChars($buffer);
$bufferText = (($bufferChars | %{ if ([char]::IsControl($_) -eq $true) { if ($useControlPictures -eq $false) { '.' } else { [char] ($_.ToInt16([cultureinfo]::InvariantCulture) + 0x2400) } } else { "$_" } }) -join "")
$bufferText
}
<#
.Synopsis
Displays binary data as a hexadecimal dump.
.Description
Displays binary data as a hexadecimal dump. Options are available to suppress displaying text and to display control characters
as Unicode Control Pictures instead of dots.
.Parameter Bytes
The bytes to be displayed.
.Parameter Encoding
The name of the text encoding to use. The default is ascii.
.Parameter NoTextDisplay
If specified the text display sidebar will be suppressed; otherwise, the display text sidebar will be present.
.Parameter UseControlPictures
If specified control characters will be displayed as Unicode Control pictures; otherwise, dots are used to represent control
characters.
.Example
Format-HexDump -Encoding unicode $bytes
.Example
Get-Content -Encoding Byte 'MyFile.bin' | Format-HexDump -Encoding unicode
.Example
0..255 | Format-HexDump -NoTextDisplay
#>
function Format-HexDump
{
[CmdletBinding()]
param
(
[Parameter(ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)]
[byte[]] $Bytes,
[ValidateScript({ if (([System.Text.Encoding]::GetEncodings().Name + @('unicode', 'ascii')) -icontains $_) { return $true } else { Throw "Encoding must be one of the following: $([System.Text.Encoding]::GetEncodings().Name -join ', '), unicode, or ascii." } })]
[Parameter(ValueFromPipeline = $false)]
[string] $Encoding = "ASCII",
[Parameter()]
[switch] $NoTextDisplay,
[Parameter()]
[switch] $UseControlPictures
)
BEGIN
{
$displayEncoding = [System.Text.Encoding]::GetEncoding($Encoding)
$counter = 0
$hexRow = ""
[byte[]] $buffer = @()
}
PROCESS
{
foreach ($byte in $Bytes)
{
$buffer += $byte
$hexValue = $byte.ToString("X2")
if ($counter % 16 -eq 0)
{
$buffer = @($byte)
$hexRow = "$($counter.ToString("X8")): $($hexValue) "
}
elseif ($counter % 16 -eq 15)
{
if ($NoTextDisplay -eq $true)
{
$hexRow += "$($hexValue)"
$hexRow
}
else
{
$bufferText = Format-BufferText $buffer $displayEncoding $UseControlPictures
$hexRow += "$($hexValue) $($bufferText)"
$hexRow
}
}
else
{
$hexRow += "$($hexValue) "
}
$counter++
}
}
END
{
$counter--
if ($counter % 16 -ne 15)
{
$hexRow += " " * (((16 - $counter % 16) * 3) - 1)
if ($NoTextDisplay -eq $false)
{
$bufferText = Format-BufferText $buffer $displayEncoding $UseControlPictures
$hexRow += "$($bufferText)"
}
$hexRow
}
}
}
Register-ArgumentCompleter -CommandName Format-HexDump -ParameterName Encoding -ScriptBlock $encodingAutoCompleter
ผลลัพธ์มีดังนี้:
00000000: 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ................
00000010: 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F ................
00000020: 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F !"#$%&'()*+,-./
00000030: 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 0123456789:;<=>?
00000040: 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F @ABCDEFGHIJKLMNO
00000050: 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F PQRSTUVWXYZ[\]^_
00000060: 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F `abcdefghijklmno
00000070: 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F pqrstuvwxyz{|}~.
00000080: 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F ????????????????
00000090: 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F ????????????????
000000A0: A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF ????????????????
000000B0: B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF ????????????????
000000C0: C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF ????????????????
000000D0: D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF ????????????????
000000E0: E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF ????????????????
000000F0: F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF ????????????????