Trong bài viết này, chúng ta sẽ tìm hiểu về lời giải cho bài toán đưa ra dưới đây
Tuyên bố vấn đề − Chúng ta được cung cấp một chuỗi thập lục phân, chúng ta cần chuyển đổi nó thành số thập phân tương đương
Chúng tôi có hai cách tiếp cận để giải quyết vấn đề−
- Cách tiếp cận vũ phu
- Sử dụng mô-đun tích hợp
Phương pháp Brute-Force
Ở đây chúng tôi nhờ sự trợ giúp của chức năng truyền kiểu rõ ràng i. e. số nguyên. Hàm này nhận hai đối số i. e. hex tương đương và cơ số i. e. [16]. Hàm này được sử dụng để chuyển đổi một chuỗi thập lục phân thành số thập phân tương đương của nó trong một loại số nguyên, có thể được đánh máy thêm về định dạng chuỗi
Thí dụ
Bản thử trực tiếp
#input string string = 'F' # converting hexadecimal string to decimal res = int[string, 16] # print result print["The decimal number associated with hexadecimal string is : " + str[res]]
đầu ra
The decimal number associated with hexadecimal string is: 15
Sử dụng mô-đun “ast” tích hợp
Ở đây chúng tôi sử dụng hàm literal_eval có sẵn trong mô-đun ast, chúng tôi có thể dự đoán cơ sở của giá trị tương đương thập lục phân đã cho và sau đó chuyển đổi thành tương đương thập phân của nó. Ở đây chúng tôi sử dụng khái niệm đánh giá theo nghĩa đen
Để chuyển đổi một chuỗi thập lục phân thành một số nguyên, hãy chuyển chuỗi đó làm đối số đầu tiên vào hàm
0x0 --> 0 0x4 --> 4 0x8 --> 8 0x12 --> 18 0x16 --> 22 0x20 --> 32 0x24 --> 36 0x28 --> 401 tích hợp của Python. Sử dụng
0x0 --> 0 0x4 --> 4 0x8 --> 8 0x12 --> 18 0x16 --> 22 0x20 --> 32 0x24 --> 36 0x28 --> 402 làm đối số thứ hai của hàm
0x0 --> 0 0x4 --> 4 0x8 --> 8 0x12 --> 18 0x16 --> 22 0x20 --> 32 0x24 --> 36 0x28 --> 401 để xác định rằng chuỗi đã cho là một số hex. Hàm
0x0 --> 0 0x4 --> 4 0x8 --> 8 0x12 --> 18 0x16 --> 22 0x20 --> 32 0x24 --> 36 0x28 --> 401 sau đó sẽ chuyển đổi chuỗi hex thành số nguyên có cơ số 10 và trả về kết quả
Đây là một ví dụ tối thiểu
>>> int['0xff', base=16] 255
ví dụ
Và đây là cách bạn có thể chuyển đổi các ví dụ bổ sung được hiển thị ở trên
>>> int['0x0', base=16] 0 >>> int['0x4', base=16] 4 >>> int['0x8', base=16] 8 >>> int['0x12', base=16] 18 >>> int['0x16', base=16] 22 >>> int['0x20', base=16] 32 >>> int['0x24', base=16] 36 >>> int['0x28', base=16] 40
Bạn thực sự không cần sử dụng tiền tố
0x0 --> 0 0x4 --> 4 0x8 --> 8 0x12 --> 18 0x16 --> 22 0x20 --> 32 0x24 --> 36 0x28 --> 405 vì đối số thứ hai của bạn đã xác định rõ ràng rằng chuỗi đã cho là một số thập lục phân
>>> int['0', base=16] 0 >>> int['4', base=16] 4 >>> int['8', base=16] 8 >>> int['12', base=16] 18 >>> int['16', base=16] 22 >>> int['20', base=16] 32 >>> int['24', base=16] 36 >>> int['28', base=16] 40
Tuy nhiên, bỏ qua cơ sở nhưng để lại tiền tố làm tăng
0x0 --> 0 0x4 --> 4 0x8 --> 8 0x12 --> 18 0x16 --> 22 0x20 --> 32 0x24 --> 36 0x28 --> 406
>>> int['0x28'] Traceback [most recent call last]: File "", line 1, in int['0x28'] ValueError: invalid literal for int[] with base 10: '0x28'
Nó giả định rằng chuỗi đầu vào ở cơ số 10 trong khi thực tế không phải vậy
💡 Lưu ý. Mặc dù việc chuyển một chuỗi có tiền tố
0x0 --> 0 0x4 --> 4 0x8 --> 8 0x12 --> 18 0x16 --> 22 0x20 --> 32 0x24 --> 36 0x28 --> 407 vào hàm
0x0 --> 0 0x4 --> 4 0x8 --> 8 0x12 --> 18 0x16 --> 22 0x20 --> 32 0x24 --> 36 0x28 --> 401 là rõ ràng, nhưng hàm
0x0 --> 0 0x4 --> 4 0x8 --> 8 0x12 --> 18 0x16 --> 22 0x20 --> 32 0x24 --> 36 0x28 --> 401 của Python không chấp nhận nó nếu bạn cũng không xác định cơ số. Điều này có thể được khắc phục trong các phiên bản sau
Trên thực tế, bạn có thể chỉ định đối số cơ sở là 0 để bật tính năng đoán cơ sở—dù sao đó cũng phải là hành vi mặc định
Đoán cơ sở
Bạn có thể chuyển một chuỗi có tiền tố
0x0 --> 0 0x4 --> 4 0x8 --> 8 0x12 --> 18 0x16 --> 22 0x20 --> 32 0x24 --> 36 0x28 --> 407 vào hàm
0x0 --> 0 0x4 --> 4 0x8 --> 8 0x12 --> 18 0x16 --> 22 0x20 --> 32 0x24 --> 36 0x28 --> 401 và đặt cơ sở thành 0 để bật tính năng đoán cơ sở trong Python. Điều này sử dụng tiền tố để xác định cơ số một cách tự động—mà bạn không cần phải đặt nó thành
>>> int['0xff', base=16] 2552. Tuy nhiên, bạn vẫn phải đặt nó thành
>>> int['0xff', base=16] 2553 để lợi ích là không đáng kể trong thực tế
>>> int['0x9', base=16] 9 >>> int['0x9', base=0] 9 >>> int['0x9', 0] 9
Chuyển đổi chữ Hex thành Int
Nếu bạn không có chuỗi hex nhưng có số hex—được gọi là ký tự—chẳng hạn như
>>> int['0xff', base=16] 2554, bạn thậm chí không cần hàm
0x0 --> 0 0x4 --> 4 0x8 --> 8 0x12 --> 18 0x16 --> 22 0x20 --> 32 0x24 --> 36 0x28 --> 401 vì Python sẽ tự động chuyển đổi nó thành số thập phân
>>> 0x10 16 >>> 0xff 255
Nền int[]
Syntax: int[value [, base]] --> int
Đối số____6_______6Một đối tượng Python được chuyển đổi thành một số nguyên. Đối tượng giá trị phải có một phương thức >>> int['0xff', base=16] 2557 trả về số nguyên được liên kết—nếu không, một
>>> int['0xff', base=16] 2558 sẽ được nâng lên.
>>> int['0xff', base=16] 2559Một đối số số nguyên tùy chọn
>>> int['0xff', base=16] 2559 để xác định cơ số của hệ thống số trong đối số
>>> int['0xff', base=16] 2556. Nếu bạn đặt cơ sở, đối số
>>> int['0xff', base=16] 2556 phải là một chuỗi. Đối số
>>> int['0xff', base=16] 2559 xác định cách diễn giải đối số chuỗi. Giá trị trả về_______7_______4Trả về một số nguyên sau khi chuyển đổi đối số đầu vào
>>> int['0xff', base=16] 2556 bằng cách sử dụng phương thức
>>> int['0xff', base=16] 2557 cần thiết cho quá trình chuyển đổi
Hàm int[] trong Python
Xem video này trên YouTube
Bạn vẫn cần thêm thông tin cơ bản về hàm
0x0 --> 0 0x4 --> 4 0x8 --> 8 0x12 --> 18 0x16 --> 22 0x20 --> 32 0x24 --> 36 0x28 --> 401 tích hợp sẵn của Python chứ?
Hướng dẫn liên quan. Chức năng
0x0 --> 0 0x4 --> 4 0x8 --> 8 0x12 --> 18 0x16 --> 22 0x20 --> 32 0x24 --> 36 0x28 --> 401 tích hợp sẵn của Python
Bảng Hex sang Int
Để giải trí, đây là phép chuyển đổi từ hex sang int của lũy thừa hai
Hexadecimal LiteralDecimal Literal1122448810hex16dec20hex32dec40hex64dec80hex128dec100hex256dec200hex512dec400hex1024dec800hex2048dec1000hex4096dec2000hex8192dec4000hex16,384dec8000hex32,768dec10000hex65,536dec👉 Hướng dẫn đề xuất. Chuyển đổi chuỗi Hex thành byte
Nếu bạn muốn tìm hiểu cách chuyển đổi không chỉ một mà nhiều số nguyên thành một chuỗi hex duy nhất, hãy xem hướng dẫn chuyên sâu của chúng tôi trên blog Finxter
Chris
Trong khi làm việc với tư cách là một nhà nghiên cứu trong các hệ thống phân tán, Dr. Christian Mayer tìm thấy tình yêu của mình với việc dạy sinh viên khoa học máy tính
Để giúp sinh viên đạt được mức độ thành công Python cao hơn, anh ấy đã thành lập trang web giáo dục lập trình Finxter. com. Ông là tác giả của cuốn sách lập trình nổi tiếng Python One-Liners [NoStarch 2020], đồng tác giả của loạt sách tự xuất bản Coffee Break Python, người đam mê khoa học máy tính, cộng tác viên tự do và chủ sở hữu của một trong 10 blog Python lớn nhất thế giới
Niềm đam mê của anh ấy là viết, đọc và mã hóa. Nhưng niềm đam mê lớn nhất của anh ấy là phục vụ các lập trình viên đầy tham vọng thông qua Finxter và giúp họ nâng cao kỹ năng của mình. Bạn có thể tham gia học viện email miễn phí của anh ấy tại đây