Как преобразовать в число с плавающей запятой (из строки HEX)? - PullRequest
0 голосов
/ 25 февраля 2019

Я только что выучил 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, и так далее.

...