-1
Вот мой C++ код:Преобразовать байты долго питон
int r; // result of log_2(v) goes here
union { unsigned int u[2]; double d; } t; // temp
t.u[__FLOAT_WORD_ORDER==LITTLE_ENDIAN] = 0x43300000;
t.u[__FLOAT_WORD_ORDER!=LITTLE_ENDIAN] = v;
t.d -= 4503599627370496.0;
r = (t.u[__FLOAT_WORD_ORDER==LITTLE_ENDIAN] >> 20) - 0x3FF;
return r;
Я пытаюсь повторить этот кусок кода именно в питоне и до сих пор мой код:
class s(Structure):
_fields_ = [("u", c_ulonglong), ("d", c_double)]
t = s()
t.u = pack('<Q', c_ulonglong(int("0x43300000", 16))) # Error cannot convert argument to integer
t.u = pack('>Q', c_ulonglong(v))
t.d -= 4503599627370496.0
r = (t.u >> 20) - 0x3FF
я получаю ошибка при упаковке шестнадцатеричного числа в «u», как это упоминается в коде C++. Я хотел бы решить эту ошибку и успешно завершить этот код в python.
Ваш C++ код не является законным, чтобы начать с. Вы не можете прочитать член 'union', отличный от последнего назначенного. –
Где находится C++ в этом C-коде? –
@BaummitAugen Хорошо, я сменил союз на структуру, но это еще не решило мою проблему. –