파이썬에서 16 진수 문자열을 int로 변환
파이썬에서 16 진수 문자열을 정수로 어떻게 변환합니까?
" 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'
리터럴 :
소스 코드 나 인터프리터에 입력하는 경우 Python이 자동으로 변환합니다.
>>> integer = 0xffff
>>> integer
65535
ffff
파이썬은 대신 합법적 인 파이썬 이름을 쓰려고한다고 생각하기 때문에 이것은 작동하지 않습니다 .
>>> integer = ffff
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'ffff' is not defined
Python 숫자는 숫자로 시작하는 반면 Python 이름은 숫자로 시작할 수 없습니다.
Adding to Dan's answer above: if you supply the int() function with a hex string, you will have to specify the base as 16 or it will not think you gave it a valid value. Specifying base 16 is unnecessary for hex numbers not contained in strings.
print int(0xdeadbeef) # valid
myHex = "0xdeadbeef"
print int(myHex) # invalid, raises ValueError
print int(myHex , 16) # valid
The worst way:
>>> def hex_to_int(x):
return eval("0x" + x)
>>> hex_to_int("c0ffee")
12648430
Please don't do this!
Is using eval in Python a bad practice?
Or ast.literal_eval
(this is safe, unlike eval
):
ast.literal_eval("0xffff")
Demo:
>>> import ast
>>> ast.literal_eval("0xffff")
65535
>>>
The formatter option '%x' % seems to work in assignment statements as well for me. (Assuming Python 3.0 and later)
Example
a = int('0x100', 16)
print(a) #256
print('%x' % a) #100
b = a
print(b) #256
c = '%x' % a
print(c) #100
If you are using the python interpreter, you can just type 0x(your hex value) and the interpreter will convert it automatically for you.
>>> 0xffff
65535
In Python 2.7, int('deadbeef',10)
doesn't seem to work.
The following works for me:
>>a = int('deadbeef',16)
>>float(a)
3735928559.0
with '0x' prefix, you might also use eval function
For example
>>a='0xff'
>>eval(a)
255
참고URL : https://stackoverflow.com/questions/209513/convert-hex-string-to-int-in-python
'program story' 카테고리의 다른 글
Swift 언어의 #ifdef 대체 (0) | 2020.09.30 |
---|---|
'b'문자는 문자열 리터럴 앞에서 무엇을합니까? (0) | 2020.09.30 |
jQuery를 사용하여 키보드에서 Enter 키를 감지하는 방법은 무엇입니까? (0) | 2020.09.30 |
Git 저장소를 특정 커밋으로 롤백 (재설정)하는 방법은 무엇입니까? (0) | 2020.09.30 |
"캐시 친화적"코드 란 무엇입니까? (0) | 2020.09.30 |