haskell - 需要在 Haskell 中将 16 位无符号大端字节解码为整数

标签 haskell pack endianness

是否有一个简单的函数可以复制和粘贴来进行此转换? Ruby 的等价物是

bytes.unpack("n*")

最佳答案

使用 cerealbinary 包,解码为 16 位无符号整数 (Word16),然后将该值转换为完整的 整数:

import Data.Serialize
...
someFunction = ...
    let intVal = runGet (fromIntegral `fmap` getWord16be) bytes

编辑:

与 haskell 中的任何 monad 一样,您可以使用更高级别的函数,例如 replciateM 以及上面的代码来获取 int 值列表(下面是未经测试的代码):

import Data.Serialize
...
someFunction = ...
    let intVals = runGet (do n <- get
                             replicateM n (fromIntegral `fmap` getWord16be)) bs

关于haskell - 需要在 Haskell 中将 16 位无符号大端字节解码为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17579545/

相关文章:

haskell - 在 Haskell 中使用多态记录的意外缓存行为

python - tkinter:如何修复窗口,以便当我的内容调整大小时窗口不会调整大小?

java - 在 Java 中模拟 ADT

haskell - http-conduit 浏览器使用

javascript - 如何将 Javascript 字符串转换为八位字节/字符数组?

javascript - 在 JavaScript 中打包二进制数据

ios - 将 GUID 转换为 NSString - Objective C

python - 为什么 `numpy.ndarray.view` 会忽略之前对 `numpy.ndarray.newbyteorder` 的调用?

haskell - 前奏求幂很难理解

asp.net - 适用于 ASP.NET 应用程序的任何现成的 CSS 包