Tôi không biết làm thế nào để có được kết quả này, tôi đã thử các kỹ thuật cắt và di chuyển khác nhau để có được kết quả mà tôi mong muốn từ mỗi 4 số nguyên nhưng đôi khi số 0 cản trở kết quả chính xác
Hướng dẫn này sẽ trình bày cách chuyển đổi chuỗi hex thành
hex_val = '0xdeadcab'
print[int[hex_val, 0]]
print[int[hex_val, 16]]
3 trong Python. Nó sẽ bao gồm các định dạng hex khác nhau như có dấu, little và big-endian, hệ thập lục phân có chú thích hex_val = '0xdeadcab'
print[int[hex_val, 0]]
print[int[hex_val, 16]]
4 và chuỗi hex mặc địnhSử dụng hex_val = '0xdeadcab'
print[int[hex_val, 0]]
print[int[hex_val, 16]]
5 để chuyển đổi Hex thành Int trong Python
hex_val = '0xdeadcab'
print[int[hex_val, 0]]
print[int[hex_val, 16]]
Cách phổ biến và hiệu quả nhất để chuyển đổi hex thành số nguyên trong Python là sử dụng hàm truyền kiểu
hex_val = '0xdeadcab'
print[int[hex_val, 0]]
print[int[hex_val, 16]]
5Hà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 giá trị mặc định là
hex_val = '0xdeadcab'
print[int[hex_val, 0]]
print[int[hex_val, 16]]
0Các định dạng số khác là
hex_val = '0xdeadcab'
print[int[hex_val, 0]]
print[int[hex_val, 16]]
1 cho hệ nhị phân, hex_val = '0xdeadcab'
print[int[hex_val, 0]]
print[int[hex_val, 16]]
2 cho hệ bát phân và hex_val = '0xdeadcab'
print[int[hex_val, 0]]
print[int[hex_val, 16]]
3 cho hệ thập lục phân. Nếu bạn đặt hex_val = '0xdeadcab'
print[int[hex_val, 0]]
print[int[hex_val, 16]]
4 làm đối số cho giá trị cơ sở, nó sẽ lấy định dạng số từ tiền tố của giá trị. Nếu không có bất kỳ tiền tố nào, nó sẽ tự động nhận dạng nó dưới dạng số thập phân, hex_val = '0xdeadcab'
print[int[hex_val, 0]]
print[int[hex_val, 16]]
5 cho hệ nhị phân, hex_val = '0xdeadcab'
print[int[hex_val, 0]]
print[int[hex_val, 16]]
6 cho hệ bát phân và hex_val = '0xdeadcab'
print[int[hex_val, 0]]
print[int[hex_val, 16]]
4 cho hệ thập lục phânChuyển đổi chuỗi Hex không có tiền tố 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
hex_val = '0xdeadcab'
print[int[hex_val, 0]]
print[int[hex_val, 16]]
5 là 16Ví dụ
hex_val = 'beef101'
print[int[hex_val, 16]]
đầu ra
Kết quả là chuyển đổi số thập phân hoặc số nguyên của giá trị hex
hex_val = '0xdeadcab'
print[int[hex_val, 0]]
print[int[hex_val, 16]]
9Chuyển đổi chuỗi Hex có tiền tố thành Int trong Python
Nếu chuỗi hex có tiền tố
hex_val = '0xdeadcab'
print[int[hex_val, 0]]
print[int[hex_val, 16]]
4, sau đó thay đổi đối số giá trị cơ sở thành hex_val = '0xdeadcab'
print[int[hex_val, 0]]
print[int[hex_val, 16]]
4 để tự động phát hiện tiền tốBạn vẫn có thể chuyển
hex_val = '0xdeadcab'
print[int[hex_val, 0]]
print[int[hex_val, 16]]
3 làm cơ sở, nhưng nếu bạn đang xử lý nhiều giá trị với các định dạng số khác nhau, thì chuyển hex_val = '0xdeadcab'
print[int[hex_val, 0]]
print[int[hex_val, 16]]
4 là cách tốt nhấthex_val = '0xdeadcab'
print[int[hex_val, 0]]
print[int[hex_val, 16]]
đầu ra
Chuyển đổi chuỗi Hex Little và Big Endian thành Int trong Python
Đơn đặt hàng byte endian nhỏ và big-endia là hai loại hệ thống đặt hàng cho hệ thập lục phân. Thứ tự mặc định là little-endian, đặt số quan trọng nhất ở phần ngoài cùng bên phải của chuỗi, trong khi big-endian thì 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 giá trị cuối nhỏ. Sau đó, chuyển đổi thông thường 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 về cuối thành một chuỗi nhỏ, hãy sử dụng
hex_val = '0xdeadcab'
print[int[hex_val, 0]]
print[int[hex_val, 16]]
34 và sử dụng hàm hex_val = '0xdeadcab'
print[int[hex_val, 0]]
print[int[hex_val, 16]]
35 trên kết quả. Sau đó, chuyển đổi giá trị thập lục phân trở lại chuỗi và chuyển đổi thành số nguyênhex_val = '0xdeadcab'
print[int[hex_val, 0]]
print[int[hex_val, 16]]
3Để tóm tắt khối mã này
- Gọi
34 để chuyển đổi chuỗi hex big-endian thành giá trị thập lục phân mảng bytehex_val = '0xdeadcab' print[int[hex_val, 0]] print[int[hex_val, 16]]
- Đảo ngược mảng byte để chuyển đổi định dạng big-endian thành định dạng little-endian
- Chuyển đổi giá trị mảng byte trở lại thành định dạng chuỗi hex trong little-endian
- Chuyển đổi chuỗi thành số nguyên bằng cách sử dụng
5hex_val = '0xdeadcab' print[int[hex_val, 0]] print[int[hex_val, 16]]
đầu ra
hex_val = '0xdeadcab'
print[int[hex_val, 0]]
print[int[hex_val, 16]]
7Chuyển đổi Hex thành Số nguyên đã ký trong Python
Việc chuyển đổi bất kỳ định dạng số nào thành số nguyên có dấu sẽ cần một phép toán có tên là Phép cộng của hai, đây là phép toán theo bit để tính toán các số có dấu
Vì vậy, trước khi chúng ta có thể chuyển đổi hệ thập lục phân thành một số nguyên có dấu, chúng ta cần xác định một hàm sẽ thực hiện phép toán Phần bù của hai
hex_val = '0xdeadcab'
print[int[hex_val, 0]]
print[int[hex_val, 16]]
8Bit ngoài cùng bên trái 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ẽ dự trữ bit đó làm bit đã ký và dịch chuyển các bit khác để bù bằng cách sử dụng toán tử dịch chuyển trái theo chiều bit
hex_val = '0xdeadcab'
print[int[hex_val, 0]]
print[int[hex_val, 16]]
38Bây giờ, chuyển sang chuyển đổi thực tế của giá trị hex sang int đã ký
hex_val = '0xdeadcab'
print[int[hex_val, 0]]
print[int[hex_val, 16]]
0đầu ra
Bây giờ, chúng ta đã hoàn thành việc chuyển đổi một chuỗi hex thành một số nguyên có dấu
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 số nguyên có dấu và không dấu. Sử dụng
hex_val = '0xdeadcab'
print[int[hex_val, 0]]
print[int[hex_val, 16]]
5 với các đối số giá trị và cơ sở để chuyển đổi một số hex thành một số nguyên không dấuNếu hệ thập lục phân ở định dạng big-endian, trước tiên hãy chuyển đổi nó thành định dạng little-endian bằng cách sử dụng
hex_val = '0xdeadcab'
print[int[hex_val, 0]]
print[int[hex_val, 16]]
34 và hex_val = '0xdeadcab'
print[int[hex_val, 0]]
print[int[hex_val, 16]]
35Cuối cùng, nếu bạn cần chuyển đổi một chuỗi hex thành một số nguyên có dấu, thì hãy thực hiện thao tác Bổ sung hai trên giá trị thập lục phân trên đó để nhận giá trị số nguyên có dấu