Python 将十六进制字符串转换为int
我需要帮助将从sql获取的varbinary数据转换为int,每次取4位。 从上面的代码中,我获得的结果是('0x640761075D075A0…')。我的计划是每4位交换一次(例如:0764 0761 07D5等等),然后每4位转换成整数。我该怎么办? 多谢各位 试试看:Python 将十六进制字符串转换为int,python,sql,hex,floating-point-conversion,varbinarymax,Python,Sql,Hex,Floating Point Conversion,Varbinarymax,我需要帮助将从sql获取的varbinary数据转换为int,每次取4位。 从上面的代码中,我获得的结果是('0x640761075D075A0…')。我的计划是每4位交换一次(例如:0764 0761 07D5等等),然后每4位转换成整数。我该怎么办? 多谢各位 试试看: from struct import pack, unpack def convert_hex_to_int(n:int, interval:int): splitted = [hex(n)[2:][i:i+int
from struct import pack, unpack
def convert_hex_to_int(n:int, interval:int):
splitted = [hex(n)[2:][i:i+interval] for i in range(0, len(hex(n)[2:]), interval)]
return [unpack('<H', pack('>H', int(i, 16)))[0] for i in splitted]
print(convert_hex_to_int(0x640761075D07, 4))
从结构导入包,解包
def将_hex_转换为_int(n:int,间隔:int):
拆分=[hex(n)[2:][i:i+区间]对于范围内的i(0,len(hex(n)[2:],区间)]
返回[unpack('H',int(i,16))[0]用于拆分中的i]
打印(将十六进制转换为整数(0x640761075D07,4))
它将返回
int
的列表
:[189218891885]
嗨,谢谢!如果我改为浮点,我应该怎么做?好的,然后将float()
转换为返回如下值:return[float(int(hex(解包('H',int(i,16))))[0]),16]),用于拆分后的i]
。然后您将得到[1892.01889.01885.0]
。前一个是int(hex(解包('H',int(i,16))[0]),16)
,但这与unpack('H',int(i,16))[0]
。在第一行中,范围(0,len(hex(n)[2:],间隔)
可能等于[0,4,8]n[2:]
在本例中为640761075D07
。因此,对于[0,4,8]]中的i,这一行可以简单地表示为splited=['640761075D07'[i,i+4]]
。要将给定字符串'640761075D07'
拆分为['6407','6107',5d07']
,必须通过索引[i,i+间隔]
获取子字符串。第二行是关于转换尾数的unpack('H',int('5d07',16))
首先将'5d07'
转换为0x5d07
,然后再次将其转换为0x075d
。因为unpack()
返回一组结果,unpack('H',int('5d07',16))[0]
变为1885(0x075d)。