Python에서 문자열을 16진수로

String Hexadecimal Python



16진법의 밑수는 16이며 접두사 0x를 사용하여 16진법 형식으로 문자열을 나타낼 수 있습니다.

다음 방법을 사용하여 문자열을 16진수로 변환할 수 있습니다.







  1. hex(n) 메서드 사용
  2. 인코딩() 메서드 사용
  3. 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 링크에서 볼 수 있습니다.

https://github.com/shekharpandey89/string-to-hex-conversion