Konwertuj łańcuch szesnastkowy na int w Pythonie
Jak przekonwertować łańcuch szesnastkowy na int w Pythonie?
Mogę mieć to jako "0xffff
" lub po prostu "ffff
".
9 answers
Bez prefiksu 0x, musisz wyraźnie określić bazę, w przeciwnym razie nie ma sposobu, aby powiedzieć:
x = int("deadbeef", 16)
Dzięki prefiksowi 0x, Python może automatycznie rozróżniać hex i decimal.
>>> print int("0xdeadbeef", 0)
3735928559
>>> print int("10", 0)
10
(ty musisz określić 0
jako bazę w celu wywołania tego zachowania zgadywania przedrostków; pominięcie drugiego parametru oznacza założenie bazy-10.)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-12 00:21:19
int(hexString, 16)
działa z prefiksem 0x i bez niego:
>>> int("a", 16)
10
>>> int("0xa",16)
10
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-08 04:37:23
Dla dowolnego ciągu S:
int(s, 16)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-16 17:32:32
Konwertuj łańcuch szesnastkowy na int w Pythonie
Mogę mieć to jako
"0xffff"
lub po prostu"ffff"
.
Aby przekonwertować łańcuch znaków na int, przekaż łańcuch do int
wraz z bazą, z której konwertujesz.
Oba łańcuchy wystarczą do konwersji w ten sposób:
>>> string_1 = "0xffff"
>>> string_2 = "ffff"
>>> int(string_1, 16)
65535
>>> int(string_2, 16)
65535
Letting int
infer
Jeśli podasz 0 jako bazę, int
wywnioskuje bazę z prefiksu w łańcuchu.
>>> int(string_1, 0)
65535
Bez przedrostka szesnastkowego, 0x
, int
nie ma wystarczającej ilości informacji, z którymi można się domyślić:
>>> int(string_2, 0)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 0: 'ffff'
Literały:
Jeśli wpisujesz kod źródłowy lub interpreter, Python dokona konwersji za Ciebie:
>>> integer = 0xffff
>>> integer
65535
To nie zadziała z ffff
ponieważ Python pomyśli, że próbujesz zamiast tego napisać poprawną nazwę Pythona:
>>> integer = ffff
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'ffff' is not defined
Liczby Pythona zaczynają się od znaku numerycznego, podczas gdy nazwy Pythona nie mogą zaczynać się od znaku numerycznego.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-14 02:50:29
Dodanie do powyższej odpowiedzi dana: jeśli podasz funkcję int () z łańcuchem szesnastkowym, będziesz musiał podać bazę jako 16, lub nie pomyśli, że podałeś jej prawidłową wartość. Podanie bazy 16 jest niepotrzebne dla liczb szesnastkowych Nie zawartych w łańcuchach.
print int(0xdeadbeef) # valid
myHex = "0xdeadbeef"
print int(myHex) # invalid, raises ValueError
print int(myHex , 16) # valid
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-06-30 16:43:03
Najgorszy sposób:
>>> def hex_to_int(x):
return eval("0x" + x)
>>> hex_to_int("c0ffee")
12648430
Proszę, nie rób tego!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:02:58
W Pythonie 2.7, int('deadbeef',10)
nie działa.
Dla mnie działa:
>>a = int('deadbeef',16)
>>float(a)
3735928559.0
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-16 00:41:46
Opcja formatowania '% x ' % wydaje się działać również w poleceniach przypisania. (Przy założeniu Pythona 3.0 i nowszych)
Przykład
a = int('0x100', 16)
print(a) #256
print('%x' % a) #100
b = a
print(b) #256
c = '%x' % a
print(c) #100
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-10 09:38:19
Z prefiksem '0x' można również użyć funkcji eval
Na przykład
>>a='0xff'
>>eval(a)
255
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-21 06:39:36