파이썬에서 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
이러지 마십시오!
답변
또는 ast.literal_eval
(이것은 달리 안전합니다 eval
) :
ast.literal_eval("0xffff")
데모:
>>> import ast
>>> ast.literal_eval("0xffff")
65535
>>>