P. *_*ery 0 c++ python type-conversion
我知道python没有无符号变量,但是我需要将一个运行python(Blender)的程序转换为用C++编写的win32应用程序.我知道我可以像这样转换一个整数:
>>> int i = -1
>>> _ + 2**32
我怎样才能像0.2345f那样使用浮点数并将其转换为长类型?我需要在python中转换为long,然后在win32(c ++)中返回float ...
通常在C++中,它是下降的
>>>float f = 0.2345f;
>>>DWORD dw = *reinterpret_cast< DWORD* >( &f );
这会产生一个无符号长...并将其转换回来就是相反的:
>>>FLOAT f = *reinterpret_cast< FLOAT* >( &dw );
你可以使用struct.pack和struct.unpack为此.请注意,它不是强制转换(即重新解释相同的内存),而是转换器(复制到新的内存).
import struct
def to_float(int_):
    return struct.unpack('d', struct.pack('q', int_))[0]
def to_long(float_):
    return struct.unpack('q', struct.pack('d', float_))[0]
data = 0.2345
long_data= to_long(data) #4597616773191482474
new_data = to_float(long_data) #0.2345