Я только что выучил python за пару недель, и я понятия не имею о преобразовании типов данных.Итак, у меня очень большие данные содержат что-то вроде этого, которое я импортировал из SQL.
i='0x9406920691068F068D068A0688068506820680067E067D067D067D067B067906760674066E066A066806650665066506650669066F067D069206AD06CD06EE060F072.........'
Я импортировал данные SQl в python, используя этот код (который я получил из предыдущих вопросов)
import pyodbc
from struct import pack, unpack
conn_str = (
r'Driver={ODBC Driver 11 for SQL Server};'
r'Server=Laptop;'
r'Database=Access;'
r'Trusted_Connection=yes;'
r'CHARSET=UTF8;'
)
cnxn = pyodbc.connect(conn_str)
cnxn.add_output_converter(pyodbc.SQL_VARBINARY, hexToString) #to copy the varbinary
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, 10)))[0]), 10) for i in splitted]
cursor.execute(query)
row = cursor.fetchone()
Исходя из этого, если я наберу print(row)
, то при выводе print(type(row))
будет получен результат
'0x9406920691068F068D068A0688068506820680067E067D067D067D067B06790676....'
, когда я использую тип данных <class 'pyodbc.Row'>
функция print(convert_hex_to_int(row, 4))
, чтобы получить результаты, взяв 4 байта за раз и обработав их, выдает ошибку:
TypeError: объект 'pyodbc.Row' нельзя интерпретировать как целое число
План состоит в том, чтобы получить '0x94069206..'
равным 0694 0692
и преобразовать его в int / float, равное 1684 1682
, и так далее.