Hướng dẫn convert decimal array to hex python - chuyển đổi mảng thập phân thành hex python

Làm cách nào để thay đổi dec_array của tôi (ví dụ: tháng 12-marray = 50, 123, 175, 13) thành hex_array (32, 7b, af, oa)? Hex () hàm chỉ hoạt động với các ký tự đơn.

Đã hỏi ngày 16 tháng 5 năm 2015 lúc 12:16May 16, 2015 at 12:16

Hướng dẫn convert decimal array to hex python - chuyển đổi mảng thập phân thành hex python

5

Sử dụng toàn bộ danh sách có lẽ sẽ là cách dễ nhất để làm điều này:

hex_array = [hex(x) for x in dec_array]

Và nếu bạn muốn loại bỏ

hex_array = [hex(x)[2:] for x in dec_array]
8 ở đầu mỗi phần tử:

hex_array = [hex(x)[2:] for x in dec_array]

Đã trả lời ngày 16 tháng 5 năm 2015 lúc 12:19May 16, 2015 at 12:19

MureinikmureinikMureinik

285K51 Huy hiệu vàng293 Huy hiệu bạc331 Huy hiệu Đồng51 gold badges293 silver badges331 bronze badges

3

Hoặc sử dụng hex, phải hoạt động.

>>> d = 30
>>> hex(d).split('x')[1]
'1e'

Đối với tiêu cực, tôi đã tìm thấy giải pháp này

def tohex(val):
  return hex((val + (1 << 64)) % (1 << 64)).split('x')[1]

Đã trả lời ngày 16 tháng 5 năm 2015 lúc 12:19May 16, 2015 at 12:19

Hướng dẫn convert decimal array to hex python - chuyển đổi mảng thập phân thành hex python

MureinikmureinikAleksander Monk

285K51 Huy hiệu vàng293 Huy hiệu bạc331 Huy hiệu Đồng2 gold badges18 silver badges30 bronze badges

0

Tôi có một mảng hex trông giống như:

31 31 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Khi chuyển đổi nó thành nhị phân, điều này trông giống như:

hex_array = [hex(x)[2:] for x in dec_array]
9

Mỗi bit là một lá cờ liên quan đến một số trong mảng. Trong trường hợp này, số nhị phân này sẽ bằng 2,3,7,10,11,15.

Tôi không chắc có tên cho ký hiệu này không, nhưng có phương pháp dễ dàng nào để chuyển đổi hex sắp nhận được danh sách các số thập phân như được hiển thị ở trên không.

So,

Mỗi

>>> d = 30
>>> hex(d).split('x')[1]
'1e'
0 tương đương với một byte hoặc 8 bit.

Mỗi

>>> d = 30
>>> hex(d).split('x')[1]
'1e'
0 chuyển đổi thành
>>> d = 30
>>> hex(d).split('x')[1]
'1e'
2.

Cách mà nhị phân này sau đó được cho là được giải thích là.

0 1 2 3 4 5 6 7 8 9 10
0 0 1 1 0 0 0 1 ......

Ở đây bạn có thể thấy tôi nhận được các giá trị thập phân 2,3,7 từ

>>> d = 30
>>> hex(d).split('x')[1]
'1e'
0.

Hy vọng điều này có ý nghĩa. Mọi sự trợ giúp sẽ rất được trân trọng.

Santosh Kumar

25.3K18 Huy hiệu vàng67 Huy hiệu bạc115 Huy hiệu đồng18 gold badges67 silver badges115 bronze badges

Hỏi ngày 8 tháng 8 năm 2012 lúc 20:07Aug 8, 2012 at 20:07

Hướng dẫn convert decimal array to hex python - chuyển đổi mảng thập phân thành hex python

4

Biến đổi mọi thứ trong một chuỗi bit lớn và sau đó liệt kê nó. Chủ yếu tương tự như câu trả lời của Blaxpirit nhưng nó không sử dụng hack

>>> d = 30
>>> hex(d).split('x')[1]
'1e'
4.

array = [0x31, 0x31, 0, 0, 0]
[i for i, x in enumerate("".join(format(a, "08b") for a in array)) if x == '1']

Kết quả trong

[2, 3, 7, 10, 11, 15]

Đã trả lời ngày 8 tháng 8 năm 2012 lúc 20:50Aug 8, 2012 at 20:50

Mitchmitchmitch

1.81015 huy hiệu bạc12 Huy hiệu đồng15 silver badges12 bronze badges

2

Vì vậy, chúng tôi có các số HEX trong một chuỗi được phân tách không gian.

s = '31 31 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'

Bây giờ chúng tôi phân chia chuỗi, chuyển đổi từng byte từ chuỗi HEX sang int (

>>> d = 30
>>> hex(d).split('x')[1]
'1e'
5), sau đó chuyển đổi nó thành chuỗi nhị phân (
>>> d = 30
>>> hex(d).split('x')[1]
'1e'
6), sau đó lấy đi
>>> d = 30
>>> hex(d).split('x')[1]
'1e'
7 bằng
>>> d = 30
>>> hex(d).split('x')[1]
'1e'
8, thêm Zeroes ở đầu để chuỗi chính xác 8 (
>>> d = 30
>>> hex(d).split('x')[1]
'1e'
9) . Sau đó, chúng tôi tham gia tất cả các chuỗi bit với nhau trong một chuỗi.

s = ''.join(bin(int(b, 16))[2:].zfill(8) for b in s.split())
# Now `s` is '0011000100110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
  • Một thay thế cho dòng trên, hoạt động trong Python 2.5:
    trans = {'0':'0000','1':'0001','2':'0010','3':'0011','4':'0100','5':'0101','6':'0110','7':'0111','8':'1000','9':'1001','a':'1010','b':'1011','c':'1100','d':'1101','e':'1110','f':'1111',' ':''}
    s = ''.join(trans[c] for c in s.lower())

Sau đó, chúng tôi

def tohex(val):
  return hex((val + (1 << 64)) % (1 << 64)).split('x')[1]
0 các bit, vì vậy mỗi bit (
def tohex(val):
  return hex((val + (1 << 64)) % (1 << 64)).split('x')[1]
1) sẽ có một vị trí tương ứng (
def tohex(val):
  return hex((val + (1 << 64)) % (1 << 64)).split('x')[1]
2), giống như bạn mô tả. Chúng tôi sử dụng danh sách hiểu và chỉ bao gồm những vị trí mà biểu tượng là
def tohex(val):
  return hex((val + (1 << 64)) % (1 << 64)).split('x')[1]
3.

hex_array = [hex(x)[2:] for x in dec_array]
0

Đã trả lời ngày 8 tháng 8 năm 2012 lúc 20:24Aug 8, 2012 at 20:24

Oleh Prypinoleh PrypinOleh Prypin

32.2k9 Huy hiệu vàng86 Huy hiệu bạc98 Huy hiệu Đồng9 gold badges86 silver badges98 bronze badges

9

Được rồi, vì vậy, điều đầu tiên trước tiên, bạn cần chuyển đổi mảng hex đó thành số nguyên, sau đó thành nhị phân. Điều này khá đơn giản trong Python:

hex_array = [hex(x)[2:] for x in dec_array]
1

Theo đó, chúng ta có thể thực hiện một số liệt kê và danh sách hiểu biết tuyệt vời để có được những con số chúng ta cần:

hex_array = [hex(x)[2:] for x in dec_array]
2

Vì vậy, giả sử bạn đã có hex của bạn trong một mảng, điều này sẽ cung cấp cho bạn câu trả lời bạn đang tìm kiếm.

Đã trả lời ngày 8 tháng 8 năm 2012 lúc 20:23Aug 8, 2012 at 20:23

JosiahjosiahJosiah

3.17621 Huy hiệu bạc23 Huy hiệu đồng21 silver badges23 bronze badges

1

Sử dụng danh sách vị trí được tính toán trước:

hex_array = [hex(x)[2:] for x in dec_array]
3

Trong đó

def tohex(val):
  return hex((val + (1 << 64)) % (1 << 64)).split('x')[1]
4 Bản đồ tất cả (256) byte cho các vị trí tương ứng:

hex_array = [hex(x)[2:] for x in dec_array]
4

Nếu mảng của bạn thực sự là một chuỗi hex thì bạn có thể chuyển đổi nó thành bytearray:

hex_array = [hex(x)[2:] for x in dec_array]
5

Đã trả lời ngày 8 tháng 8 năm 2012 lúc 22:13Aug 8, 2012 at 22:13

JFSJFSjfs

386K185 Huy hiệu vàng950 Huy hiệu bạc1626 Huy hiệu Đồng185 gold badges950 silver badges1626 bronze badges

hex_array = [hex(x)[2:] for x in dec_array]
6

Từ đó, bạn có thể sử dụng biểu thức hiểu biết hoặc biểu thức tạo danh sách để thực hiện nhiều giá trị.

Đã trả lời ngày 8 tháng 8 năm 2012 lúc 20:17Aug 8, 2012 at 20:17

user1277476user1277476user1277476

2.83111 Huy hiệu bạc9 Huy hiệu đồng11 silver badges9 bronze badges

Tôi nghĩ rằng những điều sau đây làm những gì bạn đang tìm kiếm:

hex_array = [hex(x)[2:] for x in dec_array]
7

Đã trả lời ngày 8 tháng 8 năm 2012 lúc 20:30Aug 8, 2012 at 20:30

Andrew Clarkandrew ClarkAndrew Clark

197K33 Huy hiệu vàng268 Huy hiệu bạc298 Huy hiệu Đồng33 gold badges268 silver badges298 bronze badges

2