문제

육각 문자열을 파이썬의 int로 어떻게 변환합니까?

나는 그것을 "로 가질 수있다"0xffff"또는 그냥"ffff".

도움이 되었습니까?

해결책

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

x = int("deadbeef", 16)

와 함께 0x 접두사, 파이썬은 16 진수와 소수점을 자동으로 구별 할 수 있습니다.

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

(너 ~ 해야 하다 지정하십시오 0 이 접두사 추측 동작을 호출하기위한 기본으로서; 두 번째 매개 변수를 생략한다는 것은 Base-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'

리터럴 :

소스 코드 또는 통역사로 입력하는 경우 Python은 다음을 위해 전환합니다.

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

이것은 작동하지 않습니다 ffff Python은 대신 합법적 인 Python 이름을 쓰려고한다고 생각할 것이기 때문입니다.

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

파이썬 번호는 숫자 문자로 시작하는 반면, 파이썬 이름은 숫자 문자로 시작할 수 없습니다.

위의 Dan의 답변에 추가 : int () 함수를 16 진수로 제공하는 경우베이스를 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

제발 이렇게하지 마십시오!

Python에서 Eval을 사용하는 것이 나쁜 관행입니까?

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

ast.literal_eval("0xffff")

데모:

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

Python 2.7에서 int('deadbeef',10) 작동하지 않는 것 같습니다.

다음은 저를 위해 작동합니다.

>>a = int('deadbeef',16)
>>float(a)
3735928559.0

Formatter 옵션 ' % x' %는 나에게도 과제 진술에서도 작동하는 것 같습니다. (파이썬 3.0 이상 가정)

예시

a = int('0x100', 16)
print(a)   #256
print('%x' % a) #100
b = a
print(b) #256
c = '%x' % a
print(c) #100

Python 통역사를 사용하는 경우 0x (16 진수)를 입력 할 수 있으며 통역사가 자동으로 변환됩니다.

>>> 0xffff

65535

'0x'접두사를 사용하면 Eval Function을 사용할 수도 있습니다.

예를 들어

>>a='0xff'
>>eval(a)
255
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top