Я хочу преобразовать Плавание Haskell в Строку, которая содержит 32-разрядное шестнадцатеричное представление плавания в стандартном формате IEEE. Я, может казаться, не нахожу пакет, который сделает это для меня. Кто-либо знает об одном?
Я заметил, что GHC.Float предлагает функцию для разложения Плавания на его основу со знаком и экспоненту (decodeFloat), но это обеспечивает 14-и 8-разрядное шестнадцатеричное число для основы и экспоненты, соответственно, который поднимает намного больше чем 32 бита. Это, кажется, не помогает.
Если существует более легкий способ сделать это, что я не вижу, сообщите мне.
Пакет float-ieee - это чистый Haskell-98, но очень интенсивно использует процессор. Если вам нужно делать это много раз и вы не против того, чтобы быть специфичным для GHC, тогда вы используете такой код, который извлекает IEEE-представление Double
как Word64
]:
import GHC.Prim
import GHC.Types
import GHC.Word
encodeIEEEDouble :: Double -> Word64
encodeIEEEDouble (D# x) = W64# (unsafeCoerce# x)
decodeIEEEDouble :: Word64 -> Double
decodeIEEEDouble (W64# x) = D# (unsafeCoerce# x)
Вы можете написать что-то подобное для Float
и Word32
.
Используйте плагин google translate jquery. Я очень успешно использовал его для перевода текста в прошлом: http://code.google.com/p/jquery-translate/
-121--4320993-Не точное решение, а другое решение. При использовании разметки
<div contenteditable="true">
<div>
content
</div>
<div>
нажатие enter создаст новый div
тэгов вместо p
тэгов.
Как насчет пакета float-ieee на Hackage? http://hackage.haskell.org/package/data-binary-ieee754
Распечатает значение 32 bit ieee754 последовательности, представляющее проходящее плавающее число.
import Data.Binary.Put
import Data.Binary.IEEE754
import qualified Data.ByteString.Lazy.Char8 as S
main = do
let s = runPut $ putFloat32be pi
S.putStrLn s
Думаю, вы случайно декодировал Double
вместо Float
. Вот почему это не подходит.