[python] 파이썬에서 16 진수 문자열을 int로 변환

파이썬에서 16 진수 문자열을 int로 어떻게 변환합니까?

0xffff“또는 ” ” 로 표시 될 수 있습니다 ffff.



답변

0x 접두사가 없으면 명시 적으로 밑을 지정해야합니다. 그렇지 않으면 말할 방법이 없습니다.

x = int("deadbeef", 16)

0x 접두사를 사용 하면 Python은 16 진수와 10 진수를 자동으로 구별 할 수 있습니다.

>>> print int("0xdeadbeef", 0)
3735928559
>>> print int("10", 0)
10

(사용자가 해야 지정 0이 접두어 추측 동작을 호출하기 위해, 상기베이스로,베이스 (10)를지지하는 제 파라미터 수단 생략).


답변

int(hexString, 16) 트릭을 수행하고 0x 접두사를 사용하거나 사용하지 않고 작동합니다.

>>> int("a", 16)
10
>>> int("0xa",16)
10


답변

주어진 문자열의 경우 :

int(s, 16)


답변

파이썬에서 16 진수 문자열을 int로 변환

나는 그대로 "0xffff"또는 그냥 가질 수 있습니다 "ffff".

문자열을 int로 변환하려면 변환 int하려는 밑과 함께 문자열을 전달하십시오 .

다음과 같은 방법으로 두 문자열 모두 충분합니다.

>>> string_1 = "0xffff"
>>> string_2 = "ffff"
>>> int(string_1, 16)
65535
>>> int(string_2, 16)
65535

분들께 int추론

기준으로 0을 전달 int하면 문자열의 접두사에서 기준을 추론합니다.

>>> int(string_1, 0)
65535

16 진수 접두사없이 0x, int추측하기에 충분한 정보를 가지고 있지 않습니다

>>> int(string_2, 0)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 0: 'ffff'

리터럴 :

소스 코드 나 인터프리터를 입력하면 파이썬이 다음과 같이 변환합니다.

>>> integer = 0xffff
>>> integer
65535

ffff파이썬은 합법적 인 파이썬 이름을 쓰려고한다고 생각하기 때문에 작동하지 않습니다 .

>>> integer = ffff
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'ffff' is not defined

파이썬 숫자는 숫자로 시작하지만 파이썬 이름은 숫자로 시작할 수 없습니다.


답변

위의 Dan의 대답에 추가 : 16 진수 문자열로 int () 함수를 제공하면 밑을 16으로 지정해야하거나 유효한 값을 제공하지 않았다고 생각합니다. 문자열에 포함되지 않은 16 진 숫자에는 16 진수를 지정할 필요가 없습니다.

print int(0xdeadbeef) # valid

myHex = "0xdeadbeef"
print int(myHex) # invalid, raises ValueError
print int(myHex , 16) # valid


답변

최악의 방법 :

>>> def hex_to_int(x):
    return eval("0x" + x)

>>> hex_to_int("c0ffee")
12648430

이러지 마십시오!

파이썬에서 eval을 사용하는 것은 나쁜 습관입니까?


답변

또는 ast.literal_eval(이것은 달리 안전합니다 eval) :

ast.literal_eval("0xffff")

데모:

>>> import ast
>>> ast.literal_eval("0xffff")
65535
>>>