在Python中將十六進製制字串轉換為int

2021-10-01 16:00:13 字數 3499 閱讀 9660

如何在python中將十六進製制字串轉換為int?

我可能將其設定為「0xffff」或「ffff」。

在上述dan的答案中加上:如果為int()函式提供了十六進製制字串,則必須將基數指定為16,否則它不會認為您給了它有效的值。 對於字串中不包含的十六進製制數字,無需指定基數16。

print int(0xdeadbeef) # valid

myhex = "0xdeadbeef"

print int(myhex) # invalid, raises valueerror

print int(myhex , 16) # valid

加上「 0x」字首,您也可以使用eval函式

例如

>>a='0xff'

>>eval(a)

255

格式化程式選項'%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

int(hexstring, 16)可以解決問題,並且可以使用和不使用0x字首:

>>> int("a", 16)

10>>> int("0xa",16)

10

對於任何給定的字串s:

int(s, 16)
如果沒有0x字首,則需要顯式指定基數,否則無法告訴:

x = int("deadbeef", 16)
使用0x字首,python可以自動區分十六進製制和十進位制。

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

3735928559

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

10

(您必須將0指定為基數,才能呼叫此字首猜測行為;省略第二個引數意味著假定基數為10。)

最壞的方法:

>>> def hex_to_int(x):

return eval("0x" + x)

>>> hex_to_int("c0ffee")

12648430

在python中使用eval是不好的做法嗎?

在python 2.7中,int('deadbeef',10)似乎不起作用。

以下對我有用:

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

>>float(a)

3735928559.0

我可能將其"0xffff""0xffff"或僅僅是"ffff"

要將字串轉換為int,請將字串與要轉換的基數一起傳遞給int

兩個字串都可以通過以下方式進行轉換:

>>> string_1 = "0xffff"

>>> string_2 = "ffff"

>>> int(string_1, 16)

65535

>>> int(string_2, 16)

65535

如果傳遞0作為基數,則int將從字串中的字首推斷基數。

>>> int(string_1, 0)

65535

如果沒有十六進製制字首0x,則int沒有足夠的資訊可用來猜測:

>>> int(string_2, 0)

traceback (most recent call last):

file "", line 1, in 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 "", line 1, in nameerror: name 'ffff' is not defined

python數字以數字字元開頭,而python名稱不能以數字字元開頭。

ast.literal_eval(這很安全,與eval不同):

ast.literal_eval("0xffff")
演示:

>>> import ast

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

65535

>>>

如果您使用的是python直譯器,則只需鍵入0x(您的十六進製制值),直譯器就會自動為您轉換。

>>> 0xffff

65535

處理十六進製制,八進位制,二進位制,整數和浮點數

使用標準字首(即0x,0b,0和0o),此函式會將任何合適的字串轉換為數字。 我在這裡回答了這個問題: https : 但這是必需的功能。

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)

matlab中將十六進製制轉換為十進位制方法

matlab中將十六進製制轉換為十進位制方法 a textread c a.txt s 以字元形式開啟檔案 alpha hex2dec a 16進製制轉化為10進製數,存入alpha矩陣 16進製制轉10進製 轉化方法二 wenjian ming,lujing ming uigetfile c a....

Excel輸入十六進製制數,以及十六進製制運算

網上覆制來複製去的連個靠譜答案都沒有.f k 所以無奈自己探索出來了 單元格 a1文字值 a2進製值 輸入內容 fefe oct2hex hex2oct a29 由於單元格沒有提供進製格式,所以填入的值實際上是文字值,但是轉換函式卻可以把文字值視為進製值拿去轉換 所以我們兩次轉換就能得到真正的進製數...

進製轉換 十六進製制轉八進位制 十六進製制轉十進位制

在十六進製制轉為八進位制的過程中包含了將十六進製制轉化為二進位制以及將二進位制轉化為八進位制!我自己測試是沒什麼問題,但是在藍橋杯官網的測試系統就顯示執行錯誤qwq 不知道為什麼 附 include includeusing namespace std int main if len2 i 3 2 ...