ฉันจะดูเนื้อหาไบนารีของไฟล์ได้อย่างไรใน Windows 7 (มันเป็นไปได้.)


35

ฉันมีไฟล์ใหญ่กว่า 500MB เล็กน้อยซึ่งเป็นสาเหตุของปัญหา

ฉันเชื่อว่าปัญหานี้เกิดขึ้นในตอนท้ายของการประชุม (EOL) ที่ใช้ ฉันต้องการดูไฟล์ในรูปแบบดิบที่ไม่ถูกตีความ (1) เพื่อยืนยันแบบแผน EOL ของไฟล์

ฉันจะดู "ไบนารี" ของไฟล์โดยใช้บางสิ่งใน Windows 7 ได้อย่างไร ฉันต้องการหลีกเลี่ยงการดาวน์โหลดอะไรเพิ่มเติม

(1) ผู้ร่วมงานของฉันและฉันเปิดไฟล์ในโปรแกรมแก้ไขข้อความและพวกเขาแสดงบรรทัดตามที่คาดหวัง แต่เครื่องมือแก้ไขข้อความทั้งสองจะเปิดไฟล์ที่มีแบบแผน EOL ที่แตกต่างกันและตีความมันแบบอัตโนมัติ (TextEdit และ Emacs 24.2 สำหรับ Emacs ฉันได้สร้างไฟล์ที่สองที่มีเพียง 4K ไบต์แรกที่ใช้head -c4096บนกล่อง linux และเปิดไฟล์นั้นจากกล่อง windows ของฉัน

ฉันพยายามใช้โหมด hexl ใน Emacs แต่เมื่อฉันไปที่โหมด hexl และกลับไปที่โหมดข้อความเนื้อหาของบัฟเฟอร์มีการเปลี่ยนแปลงเพิ่มการมองเห็น ^ M ที่ส่วนท้ายของแต่ละบรรทัดดังนั้นฉันจึงไม่ เชื่อว่าในขณะนี้

ฉันเชื่อว่าปัญหาอาจเกิดจากการใช้อักขระตัวสุดท้าย บรรณาธิการผู้ร่วมงานของฉันและฉันพยายาม (1) เพิ่งรู้จักการสิ้นสุดของการประชุมบรรทัดโดยอัตโนมัติและแสดงให้เราเห็น และจากหลักฐานอื่น ๆ ฉันเชื่อว่าการประชุม EOL เป็นการรับคืนรถเท่านั้น (2) ส่งคืนเท่านั้น

หากต้องการทราบว่ามีอะไรอยู่ในไฟล์ฉันต้องการดูเนื้อหาไบนารีของไฟล์หรืออย่างน้อยสองพันไบต์ของไฟล์โดยเฉพาะอย่างยิ่งใน Hex แม้ว่าฉันจะทำงานกับทศนิยมหรือฐานแปด เพียงแค่ค่าศูนย์จะค่อนข้างหยาบที่จะดู

UPDATE

ยกเว้นคำแนะนำDEBUGเท่านั้นคำตอบทั้งหมดด้านล่างนี้ใช้งานได้ในระดับหนึ่งหรือระดับอื่น ฉันได้รับการโหวตให้เป็นประโยชน์ คำถามของฉันไม่ดี ในการทดสอบวิธีการแก้ปัญหาที่แนะนำแต่ละครั้งฉันพบว่าฉันต้องการการดูเนื้อหาจากด้านข้างและเนื้อหาและฉันต้องการให้มันเป็นสิ่งที่เมื่อฉันมีเคอร์เซอร์อยู่เหนือสิ่งใดสิ่งหนึ่งไม่ว่าจะเป็นค่าไบต์หรือตัวอักษรข้อความ อีกด้านหนึ่งจะถูกเน้น

ฉันจริงแก้ปัญหาของฉันเมื่อ Emacs hexl-mode เริ่มทำงาน "ถูกต้อง" ดังนั้นฉันจึงไม่ได้ใช้คำตอบใด ๆ เพียงทดสอบพวกเขาเท่านั้น (ควรตรวจสอบพฤติกรรมของ Emacs แปลก ๆ และยื่นรายงานข้อผิดพลาด)


มีแนวโน้มว่ามีเครื่องมือบางอย่างภายใต้ Cygwin แต่ต้องมีการติดตั้ง Cygwin หรือถ้าคุณมีเช่นจาวาติดตั้งบนกล่องของคุณมันจะเป็นงานที่ค่อนข้างง่ายในการเขียนโปรแกรมดัมพ์ใน Java
Daniel R Hicks

คำตอบ:


11

คุณต้องมี "hex editor" ฉันใช้ "Hex Editor Neo" มาหลายปีแล้วและมันก็ดีมาก มันมีอยู่ในรุ่นฟรีและจ่ายเงิน (และฉันแน่ใจว่ามีเครื่องมืออื่นที่คล้ายคลึงกัน)


4
ฉันถามว่าไม่มีอะไรนอกเหนือจาก Windows 7 เพราะฉันไม่ชอบการเพิ่มโปรแกรมเพิ่มเติมเพราะ 1) การติดตั้งจำนวนมากในแบบที่ฉันไม่ได้รับอนุญาต 2) บางคนดูเหมือนจะหลบ ที่กล่าวว่า Hex Editor Neo ดูเหมือนจะเป็นคำแนะนำที่ดี +1
แชนนอนชดเชย

1
zblist.comเป็นโปรแกรมแบบสแตนด์อโลนที่ไม่จำเป็นต้องติดตั้งหรือต้องการสิทธิ์พิเศษใด ๆ และมีโหมด Alt-H หรือโหมด hex
sgmoore

ตรงตามข้อกำหนดทั้งหมดของฉันรวมถึงที่ระบุไว้ไม่ถูกต้องไม่ระบุ Hex Editor Neo นั้นเร็วเหมือนกันและถูกเพิ่มไว้ในกระเป๋าเครื่องมือของฉัน
Shannon Severance

1. บรรณาธิการอื่น ๆ ไม่ใช่เจ้าของภาษา 2. ตัวจัดการไฟล์นั้นดีสำหรับจุดประสงค์นี้และมีอยู่มากมายที่พกพาได้ 3. ประเภทคำสั่งสามารถแสดงเนื้อหาได้อย่างเป็นธรรมชาติและมีตัวกรองที่มีประโยชน์ (เช่นทีละหน้า)
Overmind

37

หากคุณมี PowerShell เวอร์ชั่น 5.0 หรือใหม่กว่าคุณสามารถใช้powershellฟังก์ชันในตัวFormat-Hex

PS:21 C:\Temp >Format-Hex application.exe

            0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F

00000000   42 4D 5E 00 00 00 00 00 00 00 36 00 00 00 28 00  BM^.......6...(. 
00000010   00 00 0A 00 00 00 01 00 00 00 01 00 20 00 00 00  ............ ... 
00000020   00 00 00 00 00 00 C4 0E 00 00 C4 0E 00 00 00 00  ......Ä...Ä..... 
00000030   00 00 00 00 00 00 B7 59 71 FF B7 59 71 FF B7 59  ......•Yq.•Yq.•Y 
00000040   71 FF B7 59 71 FF B7 59 71 FF B7 59 71 FF B7 59  q.•Yq.•Yq.•Yq.•Y 
00000050   71 FF B7 59 71 FF B7 59 71 FF B7 59 71 FF        q.•Yq.•Yq.•Yq.

4
ฉันประหลาดใจตรงไปตรงมาว่านี่ไม่ใช่คำตอบที่ดีที่สุด นี่เป็นวิธีที่ถูกต้องในการใช้เครื่องมือที่มีอยู่แล้วใน windows หากคุณต้องการเขียนผลลัพธ์ไปยังไฟล์คุณสามารถใช้> Format-Hex application.exe> ​​out.txt
techdude

ดูเหมือนจะดี แต่Format-Hexไม่มีใน PowerShell ของฉัน ฉันเพิ่งได้รับข้อผิดพลาด "ไม่รู้จัก"
Kidburla

ตามที่ JamieSee เห็นได้ชัดว่ามันไม่ได้ถูกเพิ่มเข้ามาจนกระทั่ง powershell 5.0
techdude

26

ติดตั้งในตัวรวดเร็วและสกปรก: เริ่มต้นpowershellทำงาน:

gc -encoding byte -TotalCount 100 "your_file_path" |% {write-host ("{0:x}" -f $_) -noNewline " "}; write-host   

TotalCountคือจำนวนไบต์ที่คุณต้องการอ่านจากไฟล์

'powershell hexdump' ของ Google เพื่อรับเวอร์ชันที่ขัด / ทำงานได้ดีขึ้น

หากคุณมี Windows ทรัพยากร Kit เครื่องมือ (ไม่ได้สร้างขึ้นตรง แต่ปิด) list.exeนอกจากนี้คุณยังอาจจะใช้อรรถประโยชน์บรรทัดคำสั่งที่เรียกว่า มันเป็นตัวแก้ไขขนาดเล็กที่มีโหมด hex ออกแบบมาเพื่อทำงานกับไฟล์ขนาดใหญ่โดยเฉพาะ:

List Text File Tool (List) เป็นเครื่องมือบรรทัดคำสั่งที่แสดงและค้นหาไฟล์ข้อความตั้งแต่หนึ่งไฟล์ขึ้นไป ไม่เหมือนกับเครื่องมือแสดงข้อความอื่น ๆ รายการจะไม่อ่านไฟล์ทั้งหมดในหน่วยความจำเมื่อคุณเปิด อนุญาตให้ผู้ใช้แก้ไขไฟล์ข้อความในรูปแบบเลขฐานสิบหก

รายการมีประโยชน์สำหรับการแสดงข้อความหรือไฟล์บันทึกจากระยะไกลและสำหรับใช้บนเซิร์ฟเวอร์ที่ผู้ดูแลระบบกังวลเกี่ยวกับประสิทธิภาพของระบบที่ลดลง


1
จนถึงตอนนี้วิธีนี้ก็ใกล้เคียงที่สุดที่ฉันขอ
แชนนอนชดเชย

1
ดีง่ายติดตั้งแล้ว ฉันเปลี่ยนรูปแบบเป็นโฮสต์การเขียน ("{0: X2}" เพื่อบังคับให้ 0x0A ปรากฏเป็น "0A" ไม่ใช่ "A", ตัวอักษร 2 ตัวสำหรับตัวเลข 2 หลักเพราะนั่นเป็นวิธีที่ฉันชอบ
Adam Straughan

1
List.exe นั้นสมบูรณ์แบบ - list.exe /?คำสั่ง help ไม่ให้ข้อมูลมากนัก แต่เมื่อเข้าไปในตัวแก้ไขแล้วก็กดปุ่ม?เพื่อดูคำสั่ง Hเปิดตัวแก้ไข Hex & F1สลับวิธีแสดง Hex
Coruscate5

7

สิ่งนี้ใช้ได้กับทุกสิ่งหลังจาก XP:

certutil -encodehex MyProgram.exe MyProgram.txt

XP ต้องการชุดเครื่องมือการดูแลระบบ Windows Server 2003 จากที่นี่:

https://www.microsoft.com/en-us/download/details.aspx?id=16770


โซลูชันที่ใช้งานร่วมกันได้แบบพกพาและด้านหลังส่วนใหญ่บน windows สามารถใช้งานได้แม้จากสคริปต์แบตช์ของ Windows ประหลาดใจว่าทำไมถึงยังไม่ได้อยู่ในอันดับต้น ๆ ของคำตอบทั้งหมด
Andry

6

คัดลอกไฟล์ไปยังชื่อที่มี.COMนามสกุลโดยที่ชื่อฐานจะต้องไม่เกินแปดตัวอักษร วิ่ง

DEBUG your_filename

มันจะให้-พรอมต์ '' ชนิด

DEnter

ซ้ำ ๆ เพื่อd isplay ไฟล์ 128 ไบต์ในแต่ละครั้ง ชนิด

D ที่อยู่ Enter

เพื่อแสดง 128 ไบต์เริ่มต้นที่ที่อยู่ซึ่งจะต้องพิมพ์ในฐานสิบหกโดยที่จุดเริ่มต้นของไฟล์คือที่อยู่ 100 ประเภท

D ที่อยู่1ที่อยู่2 Enter

เพื่อแสดงจากที่อยู่1จะอยู่ที่ 2 ชนิด

D ที่อยู่ LNUM Enter

เพื่อแสดงNUMไบต์ (ความยาว) ราคาเริ่มต้นที่อยู่  จำนวนจะถูกป้อนใน hex ใช้Qเพื่อออก

ตัวอย่างเช่น,

C:\Users\scott\Documents> debug thispost.com
-d
0BE4:0100  43 6F 70 79 20 74 68 65-20 66 69 6C 65 20 74 6F   Copy the file to
0BE4:0110  20 61 20 6E 61 6D 65 20-77 69 74 68 20 61 20 2E    a name with a .
0BE4:0120  43 4F 4D 20 65 78 74 65-6E 73 69 6F 6E 2C 20 77   COM extension, w
0BE4:0130  68 65 72 65 20 74 68 65-20 62 61 73 65 20 6E 61   here the base na
0BE4:0140  6D 65 20 69 73 20 6E 6F-20 6C 6F 6E 67 65 72 20   me is no longer
0BE4:0150  74 68 61 6E 20 65 69 67-68 74 20 63 68 61 72 61   than eight chara
0BE4:0160  63 74 65 72 73 2E 0D 0A-52 75 6E 20 44 45 42 55   cters...Run DEBU
0BE4:0170  47 20 2A 79 6F 75 72 5F-66 69 6C 65 6E 61 6D 65   G *your_filename
-d
0BE4:0180  2A 0D 0A 49 74 20 77 69-6C 6C 20 67 69 76 65 20   *..It will give
0BE4:0190  61 20 27 2D 27 20 70 72-6F 6D 70 74 2E 0D 0A 54   a '-' prompt...T
0BE4:01A0  79 70 65 20 44 20 45 6E-74 65 72 20 72 65 70 65   ype D Enter repe
0BE4:01B0  61 74 65 64 6C 79 20 74-6F 20 2A 2A 64 2A 2A 69   atedly to **d**i
0BE4:01C0  73 70 6C 61 79 20 74 68-65 20 66 69 6C 65 20 31   splay the file 1
0BE4:01D0  32 38 20 62 79 74 65 73-20 61 74 20 61 20 74 69   28 bytes at a ti
0BE4:01E0  6D 65 2E 0D 0A 54 79 70-65 20 44 20 5F 61 64 64   me...Type D _add
0BE4:01F0  72 65 73 73 5F 20 74 6F-20 64 69 73 70 6C 61 79   ress_ to display
-d 200 L16
0BE4:0200  20 31 32 38 20 62 79 74-65 73 20 73 74 61 72 74    128 bytes start
0BE4:0210  69 6E 67 20 61 74                                 ing at
-

3
น่าเสียดายที่ไฟล์ดังกล่าวใช้ไม่ได้หากไฟล์มีขนาดใหญ่กว่าประมาณ 64KB ซึ่งเป็นสูงสุดสำหรับ. COM (ต้องพอดีกับเซ็กเมนต์โดยเริ่มต้นที่ offset 100h.)
Ken

1
C:\>attrib debug.exe /s. File not found - debug.exeผล: ไม่สามารถค้นหาเป็นทางการได้การดีบักไม่ได้รับการสนับสนุนอีกต่อไปแต่จากสิ่งที่ฉันเห็นบนเว็บดูเหมือนว่าการสนับสนุนการแก้ไขข้อบกพร่องได้ลดลงในช่วงเวลาที่ผ่านมา ฉันพบ DebugDiag จาก Microsoft (ดาวน์โหลดเพิ่มเติม) การแก้ไขข้อบกพร่อง? บางทีมันอาจจะรองรับการดูไฟล์ใน HEX? ส่งเป็นไฟล์. MSI ต้องมีรหัสผ่านของผู้ดูแลระบบเพื่อติดตั้ง ฉันไม่ใช่คนเดียว
แชนนอนชดเชย

@Ken ฉันได้ใช้งานhead -c4096 bigFileName > smallFileNameบน linux แล้วเพื่อรับไฟล์ 4 KB แรก เส้นมีขนาดเล็กพอที่สี่ KB มีเส้นจำนวนมากสำหรับจุดประสงค์ของฉัน
Shannon Severance

เหตุใดจึงไม่ใช้งานhexdump -Cบน Linux
เคน

3
@Shannon debug เป็นส่วนหนึ่งของ DOS และถ้าคุณใช้ x64 มันไม่ได้อยู่ที่นั่น
kinokijuf

6

HxD เป็นตัวแก้ไข hex แบบพกพาซึ่งหมายถึงไม่จำเป็นต้องติดตั้งและไม่มีอะไรมากไปกว่าไฟล์ exe ไฟล์เดียว

http://mh-nexus.de/en/hxd/

อีกทางเลือกแบบพกพาที่คล้ายกันคือ Frhed:

http://frhed.sourceforge.net/en/screenshots/


ยินดีที่ได้ - มีรุ่นที่ติดตั้งได้และพกพาได้
pdem

5

เนื่องจาก Windows 7 มาพร้อมกับดอทเฟรมเวิร์ก 3.5 ในตัวคุณจะมีคอมไพเลอร์ C # ในตัวดังนั้นคุณสามารถคว้าตัวอย่างเช่นรายชื่อจากhttp://illegalargumentexception.blogspot.co.uk/2008/04/c- file-hex-dump-application.htmlจากนั้นรวบรวมโดยใช้

  \windows\Microsoft.NET\Framework\v3.5\csc printhex.cs 

และคุณควรลงท้ายด้วย printhex.exe ซึ่งควรจะแสดงทั้งตัวอักษร hex และ ascii


ง่ายและไม่จำเป็นต้องดาวน์โหลดขนาดยักษ์
รักสด

2

มันไม่เหมาะ แต่ถ้าคุณไม่ต้องการดาวน์โหลดอะไรคุณสามารถลองใช้ fc / b (เช่นไฟล์เปรียบเทียบในโหมดไบนารี) เพื่อเปรียบเทียบไฟล์นี้กับไฟล์อื่นที่แตกต่างกันโดยสิ้นเชิงและจะแสดง hex ค่าของแต่ละไบต์ที่แตกต่างกัน คุณอาจได้รับค่าบางอย่างที่เหมือนกันในสองไฟล์และอาจถูกข้ามจากเอาต์พุต แต่คุณสามารถบอกได้ว่าเกิดขึ้นโดยการตรวจสอบค่าที่หายไปในคอลัมน์ออฟเซ็ต


ไม่เหมาะ แต่ฉันสามารถทำได้โดยสร้างไฟล์ขนาด 0x00 ไบต์แล้วเปรียบเทียบกับไฟล์นั้น การเป็นไฟล์ข้อความที่ฉันกำลังดูอยู่และฉันสนใจ 0a และ 0d ส่วนใหญ่เป็นไฟล์ null เมื่อการเปรียบเทียบทำงาน แต่มันก็ไม่ได้ทำให้ทั้งมุมมองตัวละครและมุมมอง hex แบบเคียงข้างทำให้การค้นหาที่ฉันต้องการดูยากขึ้น (อย่างที่ debug ทำในคำตอบของ Scott และเช่นเดียวกับโหมด hexl ของ Emacs ฉันไม่ได้ถามมุมมองด้านข้าง แต่มันสำคัญมากสำหรับวิธีที่ฉันใช้ hex dumps จริง ๆ )
Shannon Severance

2

คุณสามารถใช้ฟังก์ชั่น 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   ????????????????

หรือใช้ชื่อไฟล์ Format-Hex
techdude

@techdude Format-Hex ไม่พร้อมใช้งานใน PowerShell ทุกรุ่น ไม่มีใน PowerShell 4 และรุ่นก่อนหน้า ฉันเขียนโค้ดนี้ก่อน Format-Hex เคยมีอยู่
JamieSee

วิธีการย้อนกลับนี้กลับไปยังไฟล์ไบนารี?
Zimba


0

ฉันรู้ว่าคุณใช้ Emacs อยู่ แต่ผู้ใช้Vimสามารถใช้xxdยูทิลิตี้:

xxd -s <start_offset> -l <length_offest> <file>

กล่าวคือ

Usage:
       xxd.exe [options] [infile [outfile]]
    or
       xxd.exe -r [-s [-]offset] [-c cols] [-ps] [infile [outfile]]
Options:
    -a          toggle autoskip: A single '*' replaces nul-lines. Default off.
    -b          binary digit dump (incompatible with -ps,-i,-r). Default hex.
    -c cols     format <cols> octets per line. Default 16 (-i: 12, -ps: 30).
    -E          show characters in EBCDIC. Default ASCII.
    -g          number of octets per group in normal output. Default 2.
    -h          print this summary.
    -i          output in C include file style.
    -l len      stop after <len> octets.
    -ps         output in postscript plain hexdump style.
    -r          reverse operation: convert (or patch) hexdump into binary.
    -r -s off   revert with <off> added to file positions found in hexdump.
    -s [+][-]seek  start at <seek> bytes abs. (or +: rel.) infile offset.
    -u          use upper case hex letters.
    -v          show version: "xxd V1.10 27oct98 by Juergen Weigert (Win32)".
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.