Python에서 16진수 문자열을 정수로 변환
16진수 문자열을 정수로 변환하려면 어떻게 해야 하나요?
"0xffff" ⟶ 65535
"ffff" ⟶ 65535
미포함0x
prefix, base를 명시적으로 지정해야 합니다.그렇지 않으면 다음 사항을 알 수 없습니다.
x = int("deadbeef", 16)
를 사용하여0x
prefix, Python은 16진수와 10진수를 자동으로 구분할 수 있습니다.
>>> print(int("0xdeadbeef", 0))
3735928559
>>> print(int("10", 0))
10
(지정해야 합니다.0
prefix-display 동작을 호출하기 위해 베이스로 사용됩니다.두 번째 파라미터를 생략하면는 base-10으로 간주됩니다).
int(hexstring, 16)
는 다음 0x 프리픽스를 사용하거나 사용하지 않고 동작합니다.
>>> int("a", 16)
10
>>> int("0xa", 16)
10
Python에서 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
Python 번호는 숫자로 시작하지만 Python 이름은 숫자로 시작할 수 없습니다.
임의의 문자열에 대해서:
int(s, 16)
위의 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
또는ast.literal_eval
(이것은 안전합니다.eval
):
ast.literal_eval("0xffff")
데모:
>>> import ast
>>> ast.literal_eval("0xffff")
65535
>>>
python interpreter를 사용하는 경우 0x(16진수 값)를 입력하면 자동으로 변환됩니다.
>>> 0xffff
65535
포메터 옵션 '%x' %는 할당문에서도 사용할 수 있는 것 같습니다.(Python 3.0 이후라고 가정)
예
a = int('0x100', 16)
print(a) #256
print('%x' % a) #100
b = a
print(b) #256
c = '%x' % a
print(c) #100
16진수, 8진수, 2진수, int 및 float 처리
이 함수는 표준 접두사(0x, 0b, 0o 등)를 사용하여 적절한 문자열을 숫자로 변환합니다.https://stackoverflow.com/a/58997070/2464381 라고 대답했습니다만, 여기 필요한 기능이 있습니다.
def to_number(n):
''' Convert any number representation to a number
This covers: float, decimal, hex, and octal numbers.
'''
try:
return int(str(n), 0)
except:
try:
# python 3 doesn't accept "010" as a valid octal. You must use the
# '0o' prefix
return int('0o' + n, 0)
except:
return float(n)
언급URL : https://stackoverflow.com/questions/209513/convert-hex-string-to-integer-in-python
'programing' 카테고리의 다른 글
SQL에서 두 행의 값과 두 행의 값 비율을 표시하는 방법은 무엇입니까? (0) | 2022.11.01 |
---|---|
Java에서 날짜 범위를 반복하는 방법 (0) | 2022.11.01 |
소켓 '/var/mysql/mysql'을 통해 로컬 MySQL 서버에 연결할 수 없습니다.양말'(38) (0) | 2022.11.01 |
JavaScript에서 달러 기호의 목적은 무엇입니까? (0) | 2022.11.01 |
숫자의 나눗셈 나머지를 찾습니다. (0) | 2022.11.01 |