Я борюсь с преобразованием 32-битного шестнадцатеричного выражения в число с одной точностью в Matlab.
Функция num2hex
отлично работает для обоих. Например,
>> b = 0.4
b =
0.400000000000000
>> class(b)
ans =
double
>> num2hex(b)
ans =
3fd999999999999a
>> num2hex(single(b))
ans =
3ecccccd
Однако, это не работает наоборот. Функция hex2num
only преобразует шестнадцатеричное выражение в double. Таким образом,
>> b = 0.4
b =
0.400000000000000
>> num2hex(single(b))
ans =
3ecccccd
>> hex2num(ans)
ans =
3.433227902860381e-006
Matlab просто добавляет нули, чтобы сделать его 64-битным гексом. Есть ли способ выполнить это преобразование?