You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python提取文件中两个偏移量之间的十六进制值

Hey there! Let's figure out how to pull those hex values from your target offset range. Since you already have the interval (like 117:126) mapped out, here are practical, easy-to-follow approaches depending on what you're working with:

Python Implementation (Great for Scripting)

If you're using Python, this is a straightforward way to extract the exact hex values you need:

  • First, open your file in binary mode—critical for handling raw byte data instead of text.
  • Calculate the number of bytes to read: if your range is start:end, that's end - start + 1 bytes (assuming both offsets are inclusive).
  • Jump to the starting offset, read the target bytes, then convert them to a hex string.

Here's a ready-to-use function:

def extract_hex_from_range(file_path, start_offset, end_offset):
    # Calculate total bytes to fetch (adjust if your end offset is exclusive)
    byte_count = end_offset - start_offset + 1
    
    with open(file_path, 'rb') as file:
        # Move the file pointer to the starting offset
        file.seek(start_offset)
        # Read the exact number of bytes in the range
        target_bytes = file.read(byte_count)
        # Convert bytes to a clean hex string (use .lower() for lowercase)
        hex_result = target_bytes.hex().upper()
    
    return hex_result

# Example usage: for offset range 117:126
hex_values = extract_hex_from_range("your_target_file.bin", 117, 126)
print(f"Hex values in range 117:126: {hex_values}")

Quick Notes:

  • Double-check if your offsets are zero-indexed or one-indexed. If your tool outputs one-indexed values, subtract 1 from both start and end to match Python's zero-based system.
  • The hex() method turns each byte into two hex characters, so a 10-byte range will become a 20-character hex string.
Command-Line Tools (No Code Needed)

If you'd rather skip writing a script, these built-in tools work like a charm:

Linux/macOS: Use xxd

xxd is a go-to for hex dumping files. To extract your range:

# Syntax: xxd -s <start_offset> -l <number_of_bytes> <file_path>
# For range 117:126, we need 10 bytes (126-117+1)
xxd -s 117 -l 10 your_target_file.bin

This shows offsets, hex values, and ASCII. To get just the raw hex string (no spaces or newlines):

xxd -s 117 -l 10 your_target_file.bin | cut -c 10-50 | tr -d ' \n'

Windows: Use certutil or PowerShell

With certutil:

# First dump the file to a hex text file
certutil -encodehex your_target_file.bin temp_hex.txt
# Manually extract the lines matching your offset range (each line covers 16 bytes by default)

With PowerShell (Precise Extraction):

Get-Content your_target_file.bin -Raw | 
    ForEach-Object { $_.ToCharArray() | Select-Object -Skip 117 -First 10 } | 
    ForEach-Object { [System.BitConverter]::ToString([byte[]]$_) } | 
    ForEach-Object { $_ -replace '-', '' }

At the end of the day, all these methods boil down to the same core steps: jump to the starting byte, read exactly the bytes in your range, then convert those bytes to their hexadecimal form.

内容的提问来源于stack exchange,提问作者jerseyjunto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:31:28