16진법의 밑수는 16이며 접두사 0x를 사용하여 16진법 형식으로 문자열을 나타낼 수 있습니다.
다음 방법을 사용하여 문자열을 16진수로 변환할 수 있습니다.
- hex(n) 메서드 사용
- 인코딩() 메서드 사용
- literal_eval() 메서드 사용
방법 1: 16진수() 사용
hex() 메서드를 사용하여 문자열을 16진수로 변환할 수 있습니다. hex() 메서드는 정수 형식의 매개변수를 허용하며, 이를 위해 먼저 문자열을 정수로 변환한 다음 해당 값을 아래와 같이 hex() 메서드에 전달해야 합니다.
예: string_to_hex.py
1 2 삼 4 5 6 7 8 9 10 열하나 12 13 14 열 다섯 16 17 18 19 스물 이십 일 | # string_to_hex.py NS = '245FC' # str을 int()에 전달하여 base16 int로 변환합니다. base16INT= 정수(NS, 16) # 변환된 문자열을 base16 16진수 int 값으로 출력 인쇄('값',base16INT) 인쇄('값',유형(base16INT)) hex_value= 마녀(base16INT) 인쇄(hex_value) # 값의 유형 확인 인쇄(유형(hex_value)) |
산출:
1 2 삼 4 5 6 7 | 값148988 값<수업 '인'> 0x245fc <수업 '스트'> |
3행: 데모용 문자열을 만들었습니다.
6행: 그 문자열을 16진법을 사용하여 int() 메서드에 전달합니다. 이제 이 int() 메서드는 문자열을 16진수 정수 값으로 변환합니다.
9행: 문자열을 정수 16진수로 변환한 후 얻은 값을 인쇄합니다.
10행: 또한 문자열이 이제 정수 형식인지 확인하기 위해 값 유형을 인쇄합니다.
12행: 내장된 hex(n) 메서드가 정수 값을 받아 정수를 16진수 문자열로 변환한다는 것을 알고 있습니다. 이것이 문자열을 정수로 변환하여 16진수() 메서드에 전달해야 하는 이유입니다. base16INT 값을 hex() 메서드에 전달하고 hex_value, 문자열 16진수를 얻었습니다.
13행: 변환된 16진수 값을 인쇄합니다.
16행: 변환된 16진수 값의 유형을 출력하고 출력에 문자열 유형임을 표시합니다.
이제 문자열을 16진수 값으로 변환했습니다.
방법 2: 인코딩()을 사용하여 문자열을 16진수로 변환
일반 문자열을 16진수 문자가 없는 16진수 문자열로 변환할 수도 있습니다. 이를 위해 우리는 encode() 메서드를 사용하여 문자열을 바이트로 변환해야 하며, 다음과 같이 문자열을 16진수로 변환할 수 있습니다.
1 2 삼 4 5 6 7 8 9 10 열하나 12 13 14 열 다섯 16 17 18 19 스물 이십 일 22 2. 3 24 25 | # string_to_hex_utf8.py # 문자열을 바이트로 변환 NS= '리눅스힌트'.인코딩('utf-8') # 변환된 문자열을 바이트로 출력 인쇄(NS) # 문자열 바이트를 16진수 문자열로 변환 hex_str= NS.마녀() # 변환된 16진수 값 유형을 인쇄합니다. 인쇄(유형(hex_str)) |
산출:
1 2 삼 | NS'리눅스힌트' <수업 '스트'> |
4~7행: 16진수 문자가 없는 문자열을 만들었습니다. 그런 다음 인코딩() 메서드를 사용하여 해당 문자열을 바이트로 변환합니다. 그런 다음 출력 라인 번호 1에서 볼 수 있는 해당 바이트를 인쇄합니다.
10~13행: 점 연산자를 사용하여 hex() 메서드를 호출하고 이제 바이트가 필요한 16진수 문자열 값으로 변환됩니다. 결과 문자열의 유형을 확인하기 위해 행 번호 13을 인쇄하면 출력은 그것이 문자열 16진수 유형임을 보여줍니다.
방법 3. ast.literal_eval() 메서드 사용
ast 라이브러리 메서드 literal_eval을 사용하여 문자열을 정수로 변환할 수도 있습니다. 또한 이 메서드는 문자열을 정수로 변환하여 16진수() 메서드를 사용하여 문자열을 16진수 문자열로 변환합니다. 그러나 이 방법은 0x 접두어 문자만 허용합니다.
1 2 삼 4 5 6 7 8 9 10 열하나 12 13 14 열 다섯 16 17 18 19 스물 이십 일 22 2. 3 24 25 26 27 28 29 30 31 32 33 | # string_to_hex_utf8.py ~에서나뭇 가지수입literal_eval NS = '0xAAA' # 문자열을 정수로 변환 convert_str=literal_eval(NS) # convert_str의 값과 유형을 출력합니다. 인쇄(convert_str) 인쇄('유형', 유형(convert_str)) # 16진수() 메서드에 convert_str을 전달합니다. hex_value= 마녀(convert_str) 인쇄(hex_value) # 값의 유형 확인 인쇄(유형(hex_value)) |
산출:
1 2 삼 4 5 6 7 | 2730 유형 <수업 '인'> 0xaaa <수업 '스트'> |
2~10행: ast 라이브러리에서 literal_eval() 메서드를 가져옵니다. 그런 다음 접두사가 0x인 문자열을 만듭니다. 그런 다음 해당 문자열을 literal_eval() 메서드에 전달하고 정수로 변환했습니다. 출력이 정수 형식인지 확인하기 위해 9번 줄에 출력합니다. 또한 출력 유형을 출력하여 정수임을 보여줍니다.
13~17행: 정수 값을 받아들이고 정수를 16진수 문자열로 변환하는 내장 hex(n) 메서드를 알고 있습니다. 이것이 문자열을 정수로 변환하여 16진수() 메서드에 전달해야 하는 이유입니다. 그 convert_str(integer) 값을 hex() 메서드에 전달하고 hex_value, 문자열 16진수를 얻었습니다. 변환된 16진수 값을 인쇄합니다. 변환된 16진수 값의 유형도 인쇄하여 문자열 16진수 유형임을 보여줍니다.
오류 예외(TypeError):
문자열을 16진수 문자열로 변환하는 동안 오류가 발생하는 경우가 있습니다. 그 이유는 hex() 메서드가 정수 값만 매개변수로 받아들이기 때문입니다.
1 2 삼 4 5 6 7 | string_hex= '0xFF' hex_출력= 마녀(string_hex) 인쇄(hex_출력) |
산출:
1 | 유형 오류:'스트' 물체해석할 수 없다같이정수 |
결론:
따라서 문자열을 16진수 소문자 문자열로 변환하는 다양한 방법을 보았습니다. hex() 메서드는 사용하기 쉽기 때문에 매우 인기가 있습니다. 그러나 때로는 접두사 0x를 사용하지 않고 문자열을 변환하고 싶을 때가 있습니다. 이 경우 기사에서 이미 보았듯이 바이트열 인코딩() 메서드를 사용할 수 있습니다.
이 기사의 코드는 아래 github 링크에서 볼 수 있습니다.