-1

I read the variable x from a column in a database using SQLAlchemy. I know that this string represents 60 (float or float16) numbers. I had no luck in using np.fromstring. I wonder how to cast this to a list of numbers in SQLAlchemy.

The following page is to insert a byte to specific column in pymssql. Insert byte into sql server varbinary(max) column using pymssql

import numpy as np
import binascii
x=b'\x91\xfe\xc3\xfe\xeb\xfe\xef\xfe\x04\xff\x1d\xff+\xff+\xff1\xff:\xffD\xffO\xffS\xffc\xffl\xff|\xff\x8f\xff\xa8\xff\xb3\xff\xbd\xff\xc7\xff\xcc\xff\xd0\xff\xd6\xff\xe5\xff\xfe\xff\xfe\xff\xfe\xff\xfe\xff\xfe\xff\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' 
y = np.fromstring(x,dtype=np.float16,count=60)
print(y)


[             nan              nan              nan              nan
              nan              nan              nan              nan
              nan              nan              nan              nan
              nan              nan              nan              nan
              nan              nan              nan              nan
              nan              nan              nan              nan
              nan              nan              nan              nan
              nan              nan   3.57627869e-07   3.57627869e-07
   3.57627869e-07   3.57627869e-07   3.57627869e-07   3.57627869e-07
   3.57627869e-07   3.57627869e-07   3.57627869e-07   3.57627869e-07
   3.57627869e-07   3.57627869e-07   3.57627869e-07   3.57627869e-07
   3.57627869e-07   3.57627869e-07   3.57627869e-07   3.57627869e-07
   3.57627869e-07   3.57627869e-07   3.57627869e-07   3.57627869e-07
   3.57627869e-07   3.57627869e-07   3.57627869e-07   3.57627869e-07
   3.57627869e-07   3.57627869e-07   3.57627869e-07   3.57627869e-07]

I am expecting a number between -40 to 40 for each array element.

1 Answer 1

1

So, it turns out the numbers are saved in int16 format. Also, np.fromstring is deprecated, and replaced by np.frombuffer. The unit was in mm instead of cm, so the resultant numbers are between -400 to 400.

import numpy as np
import binascii
x=b'\x91\xfe\xc3\xfe\xeb\xfe\xef\xfe\x04\xff\x1d\xff+\xff+\xff1\xff:\xffD\xffO\xffS\xffc\xffl\xff|\xff\x8f\xff\xa8\xff\xb3\xff\xbd\xff\xc7\xff\xcc\xff\xd0\xff\xd6\xff\xe5\xff\xfe\xff\xfe\xff\xfe\xff\xfe\xff\xfe\xff\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' 
y = np.fromstring(x,dtype=np.float16,count=60)
print(y) 

[-367 -317 -277 -273 -252 -227 -213 -213 -207 -198 -188 -177 -173 -157
 -148 -132 -113  -88  -77  -67  -57  -52  -48  -42  -27   -2   -2   -2
   -2   -2    6    6    6    6    6    6    6    6    6    6    6    6
    6    6    6    6    6    6    6    6    6    6    6    6    6    6
    6    6    6    6]
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.