parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Ответ

MoKo 17.05.2012 14:34

Вы неправильно прочитали мое сообщение: мне надо НЕХ перевести в Single.
Прочитал правильно, но вот высказался непонятно. :) Метод, который для преобразования hex в single будет использовать промежуточное преобразование в двоичный формат, будет работать на порядок медленнее. Да и лишнее это преобразование.

Что касается моего кода - да, для отрицательных чисел надо делать хитрее, со старшим битом сложности, особенно на 32-х битных платформах. Подправленная версия ниже.
@hex2single[value]

$value[^value.upper[]]
$negative(^value.length[]==8 && ^value.left(1) ge '8')
^if($negative){ $high[0x^value.left(1)] $high($high-8) $value[${high}^value.right(7)] }

$value[0x$value]
$uint(^value.int[])

$fraction((($uint & 0x07FFFFF)+0x800000)/0x800000)
$exp((($uint & 0x7FFFFFFF)>>23) - 127)

$result(^math:pow(2;$exp)*$fraction)
^if($negative){ $result(-$result) }