#-*-coding:gb2312-*-defhex_to_int16(hex_data):returnint(hex_data,16)if __name__ =='__main__':
x ="ABCD98"
y ="ABCD98"
z =hex(hex_to_int16(x)* hex_to_int16(x))print(z)
方法二
#-*-coding:gb2312-*-import numpy as np
hex_index ={'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9,'A':10,'B':11,'C':12,'D':13,'E':14,'F':15}#求余数与商defmul(m_x, m_y):
x = hex_index[m_x]
y = hex_index[m_y]
z = x * y
return z //16, z %16#进位函数defcarry(trans_array):
res_array = trans_array.copy()for m inrange(1,len(res_array)):
res_array[m]= trans_array[m -1]//16+ res_array[m]%16return res_array
if __name__ =="__main__":
x ="ABCD98"
y ="ABCD98"
x = x[::-1]
y = y[::-1]
lx =len(x)
ly =len(y)# 初始化中转数组(列表)
rs = np.zeros((lx + ly),int)for i inrange(lx):for j inrange(ly):# 逐位相乘
qt, rm = mul(x[i], y[j])# 按位相加
rs[i + j]= rs[i + j]+ rm
rs[i + j +1]= rs[i + j +1]+ qt
no_to_hex_1 = carry(rs)
no_to_hex_2 = carry(no_to_hex_1)
dst =''for iterm in no_to_hex_2:
dst = dst +list(hex_index.keys())[list(hex_index.values()).index(iterm)]print(dst[::-1])