Chuyển đổi chuỗi hex thành int in python
Tôi có thể có nó như
4 hoặc chỉ>>> int[string_1, 0] 65535
5.>>> int[string_1, 0] 65535
Để chuyển đổi một chuỗi thành int, chuyển chuỗi sang
>>> int[string_1, 0]
65535
6 cùng với cơ sở bạn đang chuyển đổi.Cả hai chuỗi sẽ đủ để chuyển đổi theo cách này:
>>> string_1 = "0xffff"
>>> string_2 = "ffff"
>>> int[string_1, 16]
65535
>>> int[string_2, 16]
65535
Để >>> int[string_1, 0]
65535
6 suy luận
>>> int[string_1, 0]
65535
Nếu bạn vượt qua 0 làm cơ sở,
>>> int[string_1, 0]
65535
6 sẽ suy ra cơ sở từ tiền tố trong chuỗi.>>> int[string_1, 0]
65535
Không có tiền tố thập lục phân,
>>> int[string_1, 0]
65535
9, >>> int[string_1, 0]
65535
6 không có đủ thông tin để đoán:>>> int[string_2, 0]
Traceback [most recent call last]:
File "", line 1, in
ValueError: invalid literal for int[] with base 0: 'ffff'
literals:
Nếu bạn đang nhập mã nguồn hoặc trình thông dịch, Python sẽ thực hiện chuyển đổi cho bạn:
>>> integer = 0xffff
>>> integer
65535
Điều này sẽ không hoạt động với
>>> int[string_2, 0]
Traceback [most recent call last]:
File "", line 1, in
ValueError: invalid literal for int[] with base 0: 'ffff'
1 vì Python sẽ nghĩ rằng bạn đang cố gắng viết một tên trăn hợp pháp thay thế: thay vào đó:>>> integer = ffff
Traceback [most recent call last]:
File "", line 1, in
NameError: name 'ffff' is not defined
Số Python bắt đầu với một ký tự số, trong khi tên Python không thể bắt đầu với một ký tự số.
Chuyển đổi chuỗi hex thành int in python Hướng dẫn này sẽ trình bày cách chuyển đổi chuỗi HEX thành
2 để chuyển đổi hex thành int trong python>>> int[string_2, 0]
Traceback [most recent call last]:
File "", line 1, in
ValueError: invalid literal for int[] with base 0: 'ffff'
6 trong Python. Nó sẽ bao gồm các định dạng hex khác nhau như chữ ký, Little và Big-endian, >>> int[string_1, 0]
65535
9 được chú thích HexAdeCimal và chuỗi hex mặc định.>>> int[string_1, 0]
65535
Sử dụng >>> int[string_2, 0]
Traceback [most recent call last]:
File "", line 1, in
ValueError: invalid literal for int[] with base 0: 'ffff'
2 để chuyển đổi hex thành int trong python
>>> int[string_2, 0]
Traceback [most recent call last]:
File "", line 1, in
ValueError: invalid literal for int[] with base 0: 'ffff'
Cách phổ biến và hiệu quả nhất để chuyển đổi HEX thành một số nguyên trong Python là sử dụng hàm đúc loại
>>> int[string_2, 0]
Traceback [most recent call last]:
File "", line 1, in
ValueError: invalid literal for int[] with base 0: 'ffff'
2.Hàm này chấp nhận hai đối số: một đối số bắt buộc, là giá trị được chuyển đổi và đối số tùy chọn thứ hai, là cơ sở của định dạng số với mặc định là
>>> int[string_2, 0]
Traceback [most recent call last]:
File "", line 1, in
ValueError: invalid literal for int[] with base 0: 'ffff'
7.Các định dạng số khác là
>>> int[string_2, 0]
Traceback [most recent call last]:
File "", line 1, in
ValueError: invalid literal for int[] with base 0: 'ffff'
8 cho nhị phân, >>> int[string_2, 0]
Traceback [most recent call last]:
File "", line 1, in
ValueError: invalid literal for int[] with base 0: 'ffff'
9 cho octal và >>> integer = 0xffff
>>> integer
65535
0 cho thập lục phân. Nếu bạn đặt >>> integer = 0xffff
>>> integer
65535
1 làm đối số cho giá trị cơ sở, nó sẽ lấy định dạng số từ tiền tố giá trị. Nếu không có bất kỳ tiền tố nào, nó sẽ tự động nhận ra nó là số thập phân, >>> integer = 0xffff
>>> integer
65535
2 cho nhị phân, >>> integer = 0xffff
>>> integer
65535
3 cho bát phân và >>> int[string_1, 0]
65535
9 cho thập lục phân.Chuyển đổi chuỗi hex không có lỗi thành int trong python
Nếu chuỗi thập lục phân không có tiền tố, thì hãy chỉ định giá trị cơ sở của hàm
>>> int[string_2, 0]
Traceback [most recent call last]:
File "", line 1, in
ValueError: invalid literal for int[] with base 0: 'ffff'
2 là 16.Ví dụ:
hex_val = 'beef101'
print[int[hex_val, 16]]
Output:
200208641
Kết quả là chuyển đổi thập phân hoặc số nguyên của giá trị Hex
>>> integer = 0xffff
>>> integer
65535
6.Chuyển đổi chuỗi hex có tiền tố thành int trong python
Nếu chuỗi Hex có tiền tố
>>> int[string_1, 0]
65535
9, thì hãy thay đổi đối số giá trị cơ sở thành >>> integer = 0xffff
>>> integer
65535
1 để tự động phát hiện tiền tố.Bạn vẫn có thể vượt qua
>>> integer = 0xffff
>>> integer
65535
0 làm cơ sở, nhưng nếu bạn xử lý nhiều giá trị với các định dạng số khác nhau, vượt qua >>> integer = 0xffff
>>> integer
65535
1 là cách tiếp cận tốt nhất.hex_val = '0xdeadcab'
print[int[hex_val, 0]]
print[int[hex_val, 16]]
Output:
233495723
233495723
Chuyển đổi chuỗi hex endian nhỏ và lớn thành int in python
Little Endian và Big-Endia Byte đơn đặt hàng là hai loại hệ thống đặt hàng cho thập lục phân. Thứ tự mặc định là Little-endian, đặt con số đáng kể nhất trong phần bên phải nhất của chuỗi, trong khi Big-Endian thực hiện ngược lại.
Với ý nghĩ đó, tất cả những gì chúng ta phải xem xét là chuyển đổi giá trị thập lục phân lớn thành một người mới. Sau đó, chuyển đổi thông thường bây giờ có thể được thực hiện trên nó.
Để chuyển đổi một chuỗi thập lục phân lớn thành một chuỗi nhỏ, sử dụng
>>> integer = ffff
Traceback [most recent call last]:
File "", line 1, in
NameError: name 'ffff' is not defined
1 và sử dụng hàm >>> integer = ffff
Traceback [most recent call last]:
File "", line 1, in
NameError: name 'ffff' is not defined
2 trên kết quả. Sau đó, chuyển đổi giá trị thập lục phân trở lại thành chuỗi và chuyển đổi nó thành một số nguyên.big_endian = 'efbe'
def to_little[val]:
little_hex = bytearray.fromhex[val]
little_hex.reverse[]
print["Byte array format:", little_hex]
str_little = ''.join[format[x, '02x'] for x in little_hex]
return str_little
little_endian = to_little[big_endian]
print["Little endian hex:", little_endian]
print["Hex to int:", int[little_endian, 16]]
Để tóm tắt khối mã này:
- Gọi
1 để chuyển đổi chuỗi hex lớn của lớn thành một giá trị thập lục phân của mảng byte.>>> integer = ffff Traceback [most recent call last]: File "", line 1, in NameError: name 'ffff' is not defined
- Đảo ngược mảng byte để chuyển đổi Big-Endian thành một định dạng nhỏ.
- Chuyển đổi giá trị mảng byte trở lại định dạng hex chuỗi trong Little-endian.
- Chuyển đổi chuỗi thành một số nguyên bằng
2.>>> int[string_2, 0] Traceback [most recent call last]: File "", line 1, in ValueError: invalid literal for int[] with base 0: 'ffff'
Output:
>>> int[string_1, 0]
65535
0Chuyển đổi Hex thành số nguyên đã ký trong Python
Chuyển đổi bất kỳ định dạng số nào thành một số nguyên đã ký sẽ cần một thao tác gọi là hai bổ sung, đây là hoạt động toán học bitwise để tính toán các số đã ký.
Vì vậy, trước khi chúng ta có thể chuyển đổi thập lục phân thành một số nguyên đã ký, chúng ta sẽ cần xác định một hàm sẽ thực hiện hoạt động bổ sung của hai.
>>> int[string_1, 0]
65535
1Bit bên trái nhất trong một giá trị nhị phân được gọi là bit đã ký, xác định xem số nguyên là dương hay âm. Hàm này sẽ bảo lưu bit đó dưới dạng bit đã ký và chuyển các bit khác để bù bằng cách sử dụng toán tử dịch chuyển bên trái bitwise
>>> integer = ffff
Traceback [most recent call last]:
File "", line 1, in
NameError: name 'ffff' is not defined
5.Bây giờ, chuyển sang chuyển đổi thực tế của giá trị hex sang int đã ký.
>>> int[string_1, 0]
65535
2Output:
>>> int[string_1, 0]
65535
3Bây giờ, chúng tôi đã đạt được việc chuyển đổi một chuỗi hex thành một số nguyên đã ký.
Tóm lại, chúng tôi đã đề cập đến việc chuyển đổi các loại định dạng thập lục phân khác nhau thành các số nguyên đã ký và không dấu. Sử dụng
>>> int[string_2, 0]
Traceback [most recent call last]:
File "", line 1, in
ValueError: invalid literal for int[] with base 0: 'ffff'
2 với các đối số giá trị và cơ sở để chuyển đổi hex thành một số nguyên không dấu.Nếu thập lục phân ở định dạng lớn, hãy chuyển đổi thành định dạng ít endian trước tiên bằng cách sử dụng
>>> integer = ffff
Traceback [most recent call last]:
File "", line 1, in
NameError: name 'ffff' is not defined
1 và >>> integer = ffff
Traceback [most recent call last]:
File "", line 1, in
NameError: name 'ffff' is not defined
2.Cuối cùng, nếu bạn cần chuyển đổi chuỗi hex thành số nguyên đã ký, thì hãy thực hiện thao tác bổ sung hai trên trên giá trị thập lục phân trên đó để có được giá trị số nguyên đã ký.