python有符號的16進位制資料轉換負數10進位制

2021-03-04 04:35:00 字數 4421 閱讀 5100

1樓:第八題選

你問的bai應該是4字元的16進位制轉du換成10進位制負數怎麼處理zhi。最簡單的辦dao法是用內numpy做個short型別強**

import numpy as np

a = '99a2'

a = np.short(a)

print(a)

主要是容因為python 將超過長度int 自動轉成了long型。

2樓:冬天終將過去

整數之間的進位制轉換:

10進位制轉16進位制: hex(16) ==> 0x1016進位制轉10進位制: int(『0x10『, 16) ==> 16

類似的還有oct(), bin()

如何轉換負整數值的python為十六進位制

3樓:黑馬程式設計師

方法有兩種:

python的整數可以成長任意大。為了生補碼加到了你想要的方式,你需要指定所需的位寬。你的例子展示-199703103在64位的2的,但它只是以及本來的32位或128位,產生不同數目的0xf的起步。

hex()沒有做到這一點。我建議以下**作為演示例子:

def tohex(val, nbits):

return hex((val + (1 << nbits)) % (1 << nbits))

print tohex(-199703103, 64)

print tohex(199703103, 64)

這將列印出:0xfffffffff418c5c1l

0xbe73a3fl

python的整數任意大的,你要遮蔽的值來限制轉換到你想要為你的2s表示的位數。

hex(-199703103 & (2**32-1)) # 32-bit

'0xf418c5c1l'

>>> hex(-199703103 & (2**64-1)) # 64-bit

'0xfffffffff418c5c1l'

python中顯示的簡單情況hex(-199703103)作為負的十六進位制值(-0xbe73a3f)的2s表示將有fs,在它的前面無限多的一個任意精度數。掩碼值(2 ** 32-1==0xffffffff的)限制這樣的:fff...

fffffffffffffffffffffffff418c5c1

&        ffffffff

--------------------------------------

f418c5c1

python 把16進位制字串轉化為16進位制數字, 比如『0x0012e』,轉化為0x0012e

4樓:夜落灬歸根

這個轉了十進位制又轉了十六進位制,都是string,而不是數值

print出來,是以string 輸出的。

分享一個我以前的

#比如hex.log 裡面是e3f2a1

#就要往檔案out.bin裡寫 0xe3 0xf2 0xa1

import string

hex_file_name = "hex.log"

bin_file_name = "out.bin"

input_file = open(hex_file_name,'r')

output_file = open(bin_file_name,'wb')

for lines in input_file.readlines():

lines = lines.replace(' ','').replace('\n','').upper()

for i in range(0, len(lines), 2):

chars = lines[i:i+2]

output_file.write(chr(int(chars, 16)))

input_file.close()

output_file.close()

核心就是

for i in range(0, len(lines), 2):

chars = lines[i:i+2]

output_file.write(chr(int(chars, 16)))

看懂了就懂了

out.bin可以用ultraedit或者notepad++十六進位制檢視

5樓:匿名使用者

>>> s = '0x0012e'

>>> a = int(s, 16)

>>> a302

6樓:匿名使用者

in [1]: int('0x0012e', 16)out[1]: 302

in [2]: hex(302)

out[2]: '0x12e'

in [3]: hex(int('0x0012e', 16))out[3]: '0x12e'

7樓:匿名使用者

eval('0x0012e')

8樓:天天不看

a='0x0012e'

b= hex(eval(a))

print b

輸出0x12e

注意,一般計算機的十六進位制數直接輸出的時候是不補0的,所以0x12e 就是 0x0012e,就好像 0005和5在整型數是儲存成一樣的值。

9樓:匿名使用者

直接int('0x0012e')就可以了。eval當然也可以。轉換完了。如果想顯示成16進位制用hex

s='0x0012e'

try:

x=int(s)

except:

print "convertion failure ":

x=0print "hex:", hex(x)

python將十六進位制轉為十進位制數字的程式怎麼寫

10樓:育知同創教育

把十六進位制的字串轉為十進位制數字:

python**

>>> print int('ff', 16)255

>>> print int('ff', 16)255把十進位制數字轉換為以十六進位制表示之字串,可呼叫內建的hex()函式:

python**

>>> print hex(255)

0xff

>>> print hex(255)

0xff

呼叫binascii模組其中的b2a_hex()函式,可把以ascii編碼的文字以十六進位制表示:

python**

>>> print binascii.b2a_hex('a')41

>>> print binascii.b2a_hex('a')41反之也可把以十六進位制表示的文字,換成以ascii編碼的文字:

python**

>>>print binascii.a2b_hex('41')「a」

python如果十六進位制要轉化為十進位制的if條件句怎麼寫

11樓:幾度夕陽

def mybin(num): bstr = bin(num) l = (len(bstr) - 2) % 4 if l > 0: bstr = bstr[:

2] + ('0'*(4-l)) + bstr[2:] return bstr

python 如何將16進位制資料字串去掉0x部分,然後轉換成16進位制資料寫入到檔案中

12樓:匿名使用者

# -*- coding: utf-8 -*-__author__ = 'lpe234'

__date__ = '2015-04-01'

hex_list = ['0xaa', '0xed', '0xef', '0xde']

f = file('x.txt', 'a+')for x in hex_list:

if x.startswith('0x'):

x = x[2:]

print x

f.write(x+'\n')

f.close()

輸出檔案:

aaed

efde

13樓:糖糖寳寳

一般計算機的十六進位制數直接輸出的時候是

不補0的,所以0x12e 就是 0x0012e,就好像 0005和5在整型數是儲存成一樣的值。

a='0x0012e'

b= hex(eval(a))

print b

輸出0x12e

14樓:匿名使用者

例如你要轉

換的數字是50,追加寫到num.txt裡面file_object = open('num.txt','w+')x = hex(50)

x = x[2:]

file_object.write(x)

file_object.close( )

10進位制轉16進位制的方法,16進位制怎麼轉成10進位制

10進位制怎麼轉16進位制的步驟有 1.首先,根據圖中的這種格式,要轉換的數字和除以16得到的商和餘數被填在相應的位置。2.然後,我們按照第2步做同樣的操作,一步一步的,把它寫在格式裡。直到最後的數字小於16,如圖所示,最後是1,最後,再將1除以16,得到商為0,餘數為1,當商為0時,就表示轉換結束...

二進位制,8進位制,10進位制,16進位制分別代表的英文字母是什麼

很久了都忘了 好像是b o d h 二進位制是binary,簡 寫為b。八進位制是octal,簡寫為o。十進位制為decimal,簡寫為d。十六進位制為hexadecimal,簡寫為h。二進位制數的特點 它由兩個基本字元0,1組成,二進位制數運算規律是逢二進一。為區別於其它進位制數,二進位制數的書寫...

二進位制有符號數加法怎麼計算,二進位制有符號數10011101轉化為十進位制是

二進位制其實簡單,只有0和1兩個數,所以1 1,等於2,就滿足了二進位制進位的標準,所以也是10,但是這個10是不是十進位制的10,而是十進位制的2。二進位制加法有四種情況 0 0 0。0 1 1。1 0 1 1 1 10 進位為1。例1103 求 1101 2 1011 2 的和。1 1 0 1 ...