Hướng dẫn read file hex python - đọc tập tin hex python

Giải pháp đơn giản là binascii:

import binascii

# Open in binary mode (so you don't read two byte line endings on Windows as one byte)
# and use with statement (always do this to avoid leaked file descriptors, unflushed files)
with open('data.geno', 'rb') as f:
    # Slurp the whole file and efficiently convert it to hex all at once
    hexdata = binascii.hexlify(f.read())

Điều này chỉ giúp bạn có một ____9 của các giá trị hex, nhưng nó làm nó nhanh hơn nhiều so với những gì bạn đang cố gắng làm. Nếu bạn thực sự muốn một loạt các chuỗi dài 2 chuỗi cho mỗi byte, bạn có thể chuyển đổi kết quả một cách dễ dàng:

hexlist = map(''.join, zip(hexdata[::2], hexdata[1::2]))

sẽ tạo ra danh sách Len 2 str tương ứng với mã hóa hex của mỗi byte. Để tránh các bản sao tạm thời của

hexlist = map(''.join, zip(hexdata[::2], hexdata[1::2]))
1, bạn có thể sử dụng một cách tiếp cận tương tự nhưng ít trực quan hơn, tránh cắt lát bằng cách sử dụng cùng một trình lặp lại hai lần với
hexlist = map(''.join, zip(hexdata[::2], hexdata[1::2]))
2:

hexlist = map(''.join, zip(*[iter(hexdata)]*2))

Update:

Đối với những người trên Python 3.5 trở lên, các đối tượng

hexlist = map(''.join, zip(hexdata[::2], hexdata[1::2]))
3 đã tạo ra một phương thức
hexlist = map(''.join, zip(hexdata[::2], hexdata[1::2]))
4, do đó, không có mô -đun nào được yêu cầu để chuyển đổi từ dữ liệu nhị phân thô sang HEX ASCII. Khối mã ở trên cùng có thể được đơn giản hóa thành chỉ:

with open('data.geno', 'rb') as f:
    hexdata = f.read().hex()

79

Nội dung chính ShowShow

  • Cách chuyển đổi này hoạt động
  • Sử dụng codecs.decode
  • Nối Hex vào chuỗi
  • Làm thế nào để bạn giải mã một chuỗi được mã hóa hex trong Python?
  • Làm thế nào để bạn đọc các giá trị hex trong python?
  • Làm thế nào để bạn giải mã thập lục phân?
  • Làm thế nào để bạn loại bỏ 0x khỏi hex trong python?

Phương pháp 1: Cắt để bỏ qua tiền tố, sử dụng cắt và bắt đầu với INDEX 2 trên chuỗi thập lục phân.Ví dụ, để bỏ qua tiền tố '0x' về kết quả của x = hex (42) = '0x2a', sử dụng thao tác cắt x [2:] dẫn đến số lượng hình lục giác '2a' mà không có tiền tố '0x'.use slicing and start with index 2 on the hexadecimal string. For example, to skip the prefix '0x' on the result of x = hex(42) ='0x2a' , use the slicing operation x[2:] that results in just the hexadecimal number '2a' without the prefix '0x' .use slicing and start with index 2 on the hexadecimal string. For example, to skip the prefix '0x' on the result of x = hex(42) ='0x2a' , use the slicing operation x[2:] that results in just the hexadecimal number '2a' without the prefix '0x' .Show

  • Cách chuyển đổi này hoạt động
  • Sử dụng codecs.decode
  • Nối Hex vào chuỗi
  • Làm thế nào để bạn giải mã một chuỗi được mã hóa hex trong Python?
  • Làm thế nào để bạn đọc các giá trị hex trong python?
  • Làm thế nào để bạn giải mã thập lục phân?
  • Làm thế nào để bạn loại bỏ 0x khỏi hex trong python?

Phương pháp 1: Cắt để bỏ qua tiền tố, sử dụng cắt và bắt đầu với INDEX 2 trên chuỗi thập lục phân.Ví dụ, để bỏ qua tiền tố '0x' về kết quả của x = hex (42) = '0x2a', sử dụng thao tác cắt x [2:] dẫn đến số lượng hình lục giác '2a' mà không có tiền tố '0x'.use slicing and start with index 2 on the hexadecimal string. For example, to skip the prefix '0x' on the result of x = hex(42) ='0x2a' , use the slicing operation x[2:] that results in just the hexadecimal number '2a' without the prefix '0x' .use slicing and start with index 2 on the hexadecimal string. For example, to skip the prefix '0x' on the result of x = hex(42) ='0x2a' , use the slicing operation x[2:] that results in just the hexadecimal number '2a' without the prefix '0x' .
Learn more.

Nội dung chính Show

comments.decode("hex")

Cách chuyển đổi này hoạt động

Sử dụng codecs.decode

Nội dung chính ShowShowJul 19, 2010 at 18:44

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.Learn more.Learn more.chimeracoder

Trong Python 2, việc chuyển đổi dạng thập lục phân của chuỗi thành unicode tương ứng là đơn giản:20 gold badges60 silver badges59 bronze badges

1

Cái gì đó như:

>>> bytes.fromhex('4a4b4c').decode('utf-8')
'JKL'

Chỉ cần đặt mã hóa thực tế bạn đang sử dụng.

Đã trả lời ngày 19 tháng 7 năm 2010 lúc 18:54Jul 19, 2010 at 18:54Jul 19, 2010 at 18:54Jul 19, 2010 at 18:54

6

import codecs

decode_hex = codecs.getdecoder("hex_codec")

# for an array
msgs = [decode_hex(msg)[0] for msg in msgs]

# for a string
string = decode_hex(string)[0]

Đã trả lời ngày 16 tháng 1 năm 2014 lúc 15:40Jan 16, 2014 at 15:40Jan 16, 2014 at 15:40Jan 16, 2014 at 15:40

NiklasniklasNiklasNiklasNiklas

21.2K32 Huy hiệu vàng121 Huy hiệu bạc165 Huy hiệu đồng32 gold badges121 silver badges165 bronze badges32 gold badges121 silver badges165 bronze badges32 gold badges121 silver badges165 bronze badges

1

Các câu trả lời từ @unbeli và @niklas là tốt, nhưng câu trả lời của @UNCELI không hoạt động cho tất cả các chuỗi Hex và mong muốn thực hiện giải mã mà không cần nhập thêm thư viện (codec). Những điều sau đây sẽ hoạt động (nhưng sẽ không hiệu quả cho các chuỗi lớn):

>>> result = bytes.fromhex((lambda s: ("%s%s00" * (len(s)//2)) % tuple(s))('4a82fdfeff00')).decode('utf-16-le')
>>> result == '\x4a\x82\xfd\xfe\xff\x00'
True

Về cơ bản, nó hoạt động xung quanh việc có các byte UTF-8 không hợp lệ bằng cách đệm với số không và giải mã là UTF-16.

Đã trả lời ngày 12 tháng 9 năm 2019 lúc 18:42Sep 12, 2019 at 18:42Sep 12, 2019 at 18:42Sep 12, 2019 at 18:42

HackerbosshackerbossHackerBossHackerBossHackerBoss

8197 Huy hiệu bạc16 Huy hiệu Đồng7 silver badges16 bronze badges7 silver badges16 bronze badges7 silver badges16 bronze badges

1

  • Cách chuyển đổi này hoạt động
  • Sử dụng codecs.decode
  • Nối Hex vào chuỗi

Làm thế nào để bạn giải mã một chuỗi được mã hóa hex trong Python?

Làm thế nào để bạn đọc các giá trị hex trong python?fromhex() function.fromhex() function.

print(bytes.fromhex('68656c6c6f').decode('utf-8'))(bytes.fromhex('68656c6c6f').decode('utf-8'))(bytes.fromhex('68656c6c6f').decode('utf-8'))(bytes.fromhex('68656c6c6f').decode('utf-8'))

Làm thế nào để bạn giải mã thập lục phân?decode() function decodes bytearray and returns a string in utf-8 format.decode() function decodes bytearray and returns a string in utf-8 format.

Làm thế nào để bạn loại bỏ 0x khỏi hex trong python?

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.Learn more.:non-hexadecimal number found infromhex()arg at position0:non-hexadecimal number found infromhex()arg at position0

Trong Python 2, việc chuyển đổi dạng thập lục phân của chuỗi thành unicode tương ứng là đơn giản:

trong đó biến 'bình luận' là một phần của dòng trong một tệp (phần còn lại của dòng không cần phải chuyển đổi, vì nó chỉ được biểu diễn trong ASCII.

Cách chuyển đổi này hoạt động

Sử dụng codecs.decode

Nối Hex vào chuỗi  at the beginning means that the value should be treated as a hexadecimal value.

Làm thế nào để bạn giải mã một chuỗi được mã hóa hex trong Python?

Làm thế nào để bạn đọc các giá trị hex trong python?fromhex() function. Cái gì đó như: Chỉ cần đặt mã hóa thực tế bạn đang sử dụng. Làm thế nào để bạn giải mã thập lục phân?decode() function decodes bytearray and returns a string in utf-8 format.
0x68 104 Làm thế nào để bạn loại bỏ 0x khỏi hex trong python?*16^1 + 8*16^0 = 6*16 + 8 * 1 = 104 Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.Learn more.:non-hexadecimal number found infromhex()arg at position0
0x65 101 Trong Python 2, việc chuyển đổi dạng thập lục phân của chuỗi thành unicode tương ứng là đơn giản:*16^1 + 5*16^0 = 6*16 + 5 * 1 = 101 Các câu trả lời từ @unbeli và @niklas là tốt, nhưng câu trả lời của @UNCELI không hoạt động cho tất cả các chuỗi Hex và mong muốn thực hiện giải mã mà không cần nhập thêm thư viện (codec). Những điều sau đây sẽ hoạt động (nhưng sẽ không hiệu quả cho các chuỗi lớn):
0x6c 108 Về cơ bản, nó hoạt động xung quanh việc có các byte UTF-8 không hợp lệ bằng cách đệm với số không và giải mã là UTF-16.*16^1 + 12*16^0 = 6*16 + 12 * 1 = 108 Đã trả lời ngày 12 tháng 9 năm 2019 lúc 18:42Sep 12, 2019 at 18:42Sep 12, 2019 at 18:42
0x6c 108 Về cơ bản, nó hoạt động xung quanh việc có các byte UTF-8 không hợp lệ bằng cách đệm với số không và giải mã là UTF-16.*16^1 + 12*16^0 = 6*16 + 12 * 1 = 108 Đã trả lời ngày 12 tháng 9 năm 2019 lúc 18:42Sep 12, 2019 at 18:42Sep 12, 2019 at 18:42
0x6f 111 HackerbosshackerbossHackerBossHackerBoss*16^1 + 15*16^0 = 6*16 + 15 * 1 = 111 8197 Huy hiệu bạc16 Huy hiệu Đồng7 silver badges16 bronze badges7 silver badges16 bronze badges

Sử dụng codecs.decode

Nối Hex vào chuỗicodecs.decode is another method you can use to achieve the same result. It takes three arguments: the bytes object, encoding, and error (specifies how errors should be handled).

Làm thế nào để bạn giải mã một chuỗi được mã hóa hex trong Python?codecs

my_string="68656c6c6f"="68656c6c6f"="68656c6c6f"="68656c6c6f"

my_string_bytes=bytes(my_string,encoding='utf-8')=bytes(my_string,encoding='utf-8')=bytes(my_string,encoding='utf-8')=bytes(my_string,encoding='utf-8')

binary_string=codecs.decode(my_string_bytes,"hex")=codecs.decode(my_string_bytes,"hex")=codecs.decode(my_string_bytes,"hex")=codecs.decode(my_string_bytes,"hex")

print(str(binary_string,'utf-8'))(str(binary_string,'utf-8'))(str(binary_string,'utf-8'))(str(binary_string,'utf-8'))

Biến MY_STRING_BYTES chuyển đổi một chuỗi thành byte bằng UTF-8. Bây giờ, biến này có thể được truyền như là đối số đầu tiên. Đối số thứ hai là Hex Hex, vì chúng tôi muốn chuyển đổi giá trị hex thành một chuỗi.my_string_bytes variable converts a string to bytes using utf-8. Now, this variable can be passed as the first argument. The second argument is “hex” as we want to convert the hex value to a string.my_string_bytes variable converts a string to bytes using utf-8. Now, this variable can be passed as the first argument. The second argument is “hex” as we want to convert the hex value to a string.my_string_bytes variable converts a string to bytes using utf-8. Now, this variable can be passed as the first argument. The second argument is “hex” as we want to convert the hex value to a string.

Mã này trả về cùng một chuỗi như trước:

Nối Hex vào chuỗi

Để nối một giá trị thập lục phân vào một chuỗi, trước tiên, bạn phải chuyển đổi nó và sau đó sử dụng nó để tham gia hai chuỗi này.

Đối với điều này, chúng tôi sẽ sử dụng một hàm chuyển đổi HEX thành chuỗi và trả lại nó dưới dạng chuỗi.

defhex_to_string(hex):hex_to_string(hex):hex_to_string(hex):hex_to_string(hex):

    ifhex[:2]=='0x':ifhex[:2]=='0x':ifhex[:2]=='0x':ifhex[:2]=='0x':

        hex=hex[2:]hex=hex[2:]hex=hex[2:]hex= hex[2:]

    string_value=bytes.fromhex(hex).decode('utf-8')string_value=bytes.fromhex(hex).decode('utf-8')string_value=bytes.fromhex(hex).decode('utf-8')string_value=bytes.fromhex(hex).decode('utf-8')

    returnstring_valuereturnstring_valuereturnstring_valuereturnstring_value

hex_value='0x737472696e67'='0x737472696e67'='0x737472696e67'='0x737472696e67'

Chuỗi = 'Đây chỉ là một'+hex_to_string ('737472696e67'))='This is just a '+hex_to_string('737472696e67')='This is just a '+hex_to_string('737472696e67')='This is just a '+hex_to_string('737472696e67')

print(string)(string)(string)(string)

Đôi khi, giá trị hex có thể được đi trước bởi 0x 0x. Chức năng của chúng tôi kiểm tra xem đây có phải là trường hợp hay không và loại bỏ hai ký tự này khỏi chuỗi.

Bởi vì hàm trả về một giá trị chuỗi, nó có thể được nối với một chuỗi khác.

Đây là giá trị trả lại.

Làm thế nào để bạn giải mã một chuỗi được mã hóa hex trong Python?

Sử dụng byte .....

HexString = "4869".

A_String = byte.Fromhex (hexstring).

A_String = a_String.Decode ("ASCII").

print(a_string).

Làm thế nào để bạn đọc các giá trị hex trong python?

Chỉ cần thay đổi s để mở (tên tệp).đọc () và bạn nên tốt .....

OD (Dump Octal, có tùy chọn -x hoặc -t x).

hexdump..

Tiện ích XD có sẵn trong Windows ..

Các công cụ kết xuất hex trực tuyến, chẳng hạn như cái này ..

Làm thế nào để bạn giải mã thập lục phân?

Chuyển đổi Hex thành thập phân....

Bắt đầu với chữ số bên phải của giá trị hex của bạn.....

Di chuyển một chữ số sang trái.....

Di chuyển một chữ số khác còn lại.....

Tiếp tục nhân mỗi chữ số gia tăng của giá trị HEX bằng cách tăng sức mạnh của 16 (4096, 65536, 1048576, ...) và ghi nhớ từng sản phẩm ..

Làm thế nào để bạn loại bỏ 0x khỏi hex trong python?

Phương pháp 1: Cắt để bỏ qua tiền tố, sử dụng cắt và bắt đầu với INDEX 2 trên chuỗi thập lục phân.Ví dụ, để bỏ qua tiền tố '0x' về kết quả của x = hex (42) = '0x2a', sử dụng thao tác cắt x [2:] dẫn đến số lượng hình lục giác '2a' mà không có tiền tố '0x'.use slicing and start with index 2 on the hexadecimal string. For example, to skip the prefix '0x' on the result of x = hex(42) ='0x2a' , use the slicing operation x[2:] that results in just the hexadecimal number '2a' without the prefix '0x' .use slicing and start with index 2 on the hexadecimal string. For example, to skip the prefix '0x' on the result of x = hex(42) ='0x2a' , use the slicing operation x[2:] that results in just the hexadecimal number '2a' without the prefix '0x' .use slicing and start with index 2 on the hexadecimal string. For example, to skip the prefix '0x' on the result of x = hex(42) ='0x2a' , use the slicing operation x[2:] that results in just the hexadecimal number '2a' without the prefix '0x' .