【发布时间】:2019-02-26 03:57:46
【问题描述】:
我对 python 越来越感到困惑。 当我尝试一行时,它可以工作,但是当我在一列的整行上工作时,它会显示错误。 我想对列中的每一行使用函数 convert_hex_to_int, 但它向我显示了错误
回溯(最近一次通话最后一次):
文件 “C:/Users/ranic/.PyCharmCE2018.3/config/scratches/scratch_2.py”,行 59,在 result_print = (convert_hex_to_int(hex_int, 4))
文件“C:/Users/r/.PyCharmCE2018.3/config/scratches/scratch_2.py”,第 32 行, 在谈话中 t_hex_to_int splitted = [hex(n)[2:][i:i + interval] for i in range(0, len(hex(n)[2:]), interval)] TypeError: 'str' object cannot be 解释为整数
这是我的代码:
cnxn = pyodbc.connect(conn_str)
cnxn.add_output_converter(pyodbc.SQL_VARBINARY, hexToString)
cursor = cnxn.cursor()
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 [int(hex(unpack('<H', pack('>H', int(i, 16)))[0]), 16) for i in splitted]
try:
cursor.execute(query)
row=cursor.fetchval()
row_list=[]
while row is not None:
row=cursor.fetchval()
hex_int = int(row, 16)
result_print = (convert_hex_to_int(hex_int, 4))
result_float = [float("{0:.2f}".format((i) * 10 ** -2)) for i in result_print]
row_list.append(result_float)
print(row_list)
如果我错过了什么,请留下任何评论,在此先感谢。 当我调试它时,它显示如下: Debugged screen
*抱歉,我必须附上图片,因为它是调试过的屏幕,我无法复制代码,它必须在链接中,因为我是新用户 **编辑:我认为这与使用 .fetchval 两次有关,但我不太确定
【问题讨论】:
-
如果
[hex(n)[2:][i:i + interval] for i in range(0, len(hex(n)[2:]), interval)]引发TypeError: 'str' object cannot be interpreted as an integer,那么n是str,而不是int。 -
@snakecharmerb 输入是十六进制字符串,类似于 0x94069206
标签: python python-3.x for-loop int fetch