Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将十六进制字符串转换为int_Python_Sql_Hex_Floating Point Conversion_Varbinarymax - Fatal编程技术网

Python 将十六进制字符串转换为int

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

我需要帮助将从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+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)。