Hướng dẫn hex decode python - giải mã hex mã trăn

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?

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.

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:

comments.decode["hex"]

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.

Tuy nhiên, bây giờ trong Python 3, điều này không hoạt động [tôi giả sử vì công tắc byte/chuỗi so với chuỗi/unicode. Tôi cảm thấy như nên có một lớp trong Python 3 để làm điều tương tự, thay vì đọc toàn bộ dòng dưới dạng một loạt byte [mà tôi không muốn làm] và sau đó chuyển đổi từng phần của dòng. Nếu có thể, tôi muốn đọc toàn bộ dòng dưới dạng chuỗi Unicode [vì phần còn lại của Dòng này nằm trong Unicode] và chỉ chuyển đổi phần này từ một đại diện thập lục phân.

hỏi ngày 19 tháng 7 năm 2010 lúc 18:44Jul 19, 2010 at 18:44Jul 19, 2010 at 18:44

Chimeracoderchimeracoderchimeracoderchimeracoder

Huy hiệu vàng 19.8K2020 gold badges60 silver badges59 bronze badges20 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: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:40

NiklasniklasNiklasNiklas

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 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:42

HackerbosshackerbossHackerBossHackerBoss

8197 Huy hiệu bạc16 Huy hiệu Đồng7 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.

print[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.

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

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

Tuy nhiên, bây giờ trong Python 3, điều này không hoạt động [tôi giả sử vì công tắc byte/chuỗi so với chuỗi/unicode. Tôi cảm thấy như nên có một lớp trong Python 3 để làm điều tương tự, thay vì đọc toàn bộ dòng dưới dạng một loạt byte [mà tôi không muốn làm] và sau đó chuyển đổi từng phần của dòng. Nếu có thể, tôi muốn đọc toàn bộ dòng dưới dạng chuỗi Unicode [vì phần còn lại của Dòng này nằm trong Unicode] và chỉ chuyển đổi phần này từ một đại diện thập lục phân.

hỏi ngày 19 tháng 7 năm 2010 lúc 18:44Jul 19, 2010 at 18:44  at the beginning means that the value should be treated as a hexadecimal value.

Chimeracoderchimeracoderchimeracoder

Huy hiệu vàng 19.8K2020 gold badges60 silver badges59 bronze badges Cái gì đó như: 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:54
0x68 104 Đã trả lời ngày 16 tháng 1 năm 2014 lúc 15:40Jan 16, 2014 at 15:40*16^1 + 8*16^0 = 6*16 + 8 * 1 = 104 NiklasniklasNiklas
0x65 101 21.2K32 Huy hiệu vàng121 Huy hiệu bạc165 Huy hiệu đồng32 gold badges121 silver badges165 bronze badges*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: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:42
0x6f 111 HackerbosshackerbossHackerBoss*16^1 + 15*16^0 = 6*16 + 15 * 1 = 111 8197 Huy hiệu bạc16 Huy hiệu Đồng7 silver badges16 bronze badges

Sử dụng codecs.decode

Đây là một hướng dẫn về cách chuyển đổi số thập lục phân thành các chuỗi trong Python. Khi làm việc với các số HEX, có thể khó đọc hoặc so sánh chúng, vì vậy việc chuyển đổi chúng thành các chuỗi sẽ làm cho quá trình dễ dàng hơn.codecs.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].

Cách dễ nhất để chuyển đổi giá trị thập lục phân sang chuỗi là sử dụng hàm từHex [].fromhex[] function.codecs

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

my_string_bytes=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"]

print[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.

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

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

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

    returnstring_valuereturnstring_valuereturnstring_value

hex_value='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']

print[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' .

Bài Viết Liên Quan

Chủ Đề