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 ...