问题标签 [bytestring]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
467 浏览

haskell - 神秘词(“LPS”)出现在 Haskell 输出列表中

我是 Haskell 的新手,并试图摆弄一些我在现实世界中经常遇到的测试用例。假设我有包含以下内容的文本文件“foo.txt”:

我正在尝试产生输出

我的代码在下面,但我在输出中得到了一些虚假的“LPS”......不确定它代表什么。

当用testFunc "foo.txt"调用时,输出是

任何帮助表示赞赏!谢谢。PS:使用 ByteString,因为这将在未来用于大量文件。

编辑:

我也很困惑为什么输出列表按上面的方式分组(每个数字都绑定在 [] 中),而在 ghci 中,下面的行给出了不同的排列。

0 投票
2 回答
1517 浏览

string - 在 ByteString 上拆分 ByteString(而不是 Word8 或 Char)

我知道我已经有 Haskell Data.ByteString.Lazy 函数将 CSV 拆分为单个字符,例如:

但我想拆分一个多字符的 ByteString(比如拆分一个字符串而不是一个字符):

我在需要解析的类似 csv 的文本文件中有多个字符分隔符,并且各个字符本身出现在某些字段中,因此仅选择一个分隔符并丢弃其他分隔符会污染数据导入。

我对如何做到这一点有一些想法,但它们似乎有点老套(例如,取三个 Word8,测试它们是否是分隔符组合,如果是,则开始一个新字段,进一步递归),我想我会无论如何都要重新发明一个轮子。有没有办法在不从头开始重建功能的情况下做到这一点?

0 投票
3 回答
4425 浏览

haskell - 多种类型的字符串(ByteString)

我希望压缩我的应用程序的网络流量。

根据(最新?)“Haskell 流行度排名”zlib似乎是一个非常流行的解决方案。zlib的接口使用ByteStrings:

我正在使用常规Strings,它们也是 、 和 使用的read数据show类型Network.Socket

所以要压缩我的字符串,我需要一些方法来将 a 转换String为 a ByteString,反之亦然。在hoogle的帮助下,我发现:

尝试使用它:

失败,因为 (?) 有不同类型的ByteString?

所以基本上:

  • 有几种类型ByteString?有哪些类型,为什么?
  • String将s转换为 s 的“方法”是ByteString什么?

顺便说一句,我发现它确实适用于Data.ByteString.Lazy.Char8's ByteString,但我仍然很感兴趣。

0 投票
3 回答
190 浏览

haskell - 将映射的 ByteString 转换为其他类型?

我意识到这可能是一个相当异端的问题,但我想知道我是否可以通过 System.IO.Posix.MMap 将数据文件cast映射到某个其他类型的严格数组中?例如。如果我知道该文件包含双精度,我能否以某种方式将这些映射数据放入一个 UArr Double 中,以便我可以对其进行 sumU 等操作,并让虚拟内存系统为我处理 IO?这基本上就是我在 C++ 代码中处理多 GB 数据集的方式。其他更惯用的方法也可以做到这一点,谢谢!

我还可以对数据进行多核处理的方式的最高附加分 :-) 并不是说​​我要求高或任何东西。

0 投票
3 回答
10601 浏览

unicode - 使用 Haskell 输出 UTF-8 编码的 ByteString

0 投票
3 回答
2739 浏览

haskell - 使用 Haskell 的 Parsec 解析 ByteString

我已经设法使用 Parsec 来解析字符串,但无法对 ByteString 做同样的事情。

如何在不手动将它们转换为字符串的情况下使 Parsec 与 ByteStrings 一起使用?

我觉得这并不难实现。我错了吗?(我是 Haskell 的新手。^^)

谢谢!

0 投票
3 回答
9184 浏览

haskell - 如何在 Haskell 中将 Integer 转换为 ByteString

我们想以特定的二进制格式序列化数据。我们Data.ByteString在内部使用 s。

所以,问题是:如何将我们使用的不同数据类型转换为ByteString. 因为String我们没有问题,我们可以使用encodeLazyByteString UTF8 "string". 但我们也想将Integers 转换为ByteStrings(大端)。

有谁知道如何做到这一点和/或有任何使用 Haskell 和二进制格式的好技巧?

谢谢!

0 投票
2 回答
1320 浏览

haskell - Haskell ByteString / Data.Binary.Get 问题

尝试使用 Data.Binary.Get 和 ByteString 却不明白发生了什么。我的代码如下:

对于返回元组的第三项,即有效负载,我收到以下错误:

有人请向我解释 Data.Binary.Get 和 ByteStrings 之间的交互以及我如何做我想做的事情。谢谢。

0 投票
2 回答
318 浏览

performance - 寻找字节串终止符的函数的 Haskell 优化

一些代码的分析表明,大约 65% 的时间我都在下面的代码中。

它所做的是使用 Data.Binary.Get monad 遍历一个字节串来寻找终止符。如果检测到 0xff,则检查下一个字节是否为 0x00。如果是,它会丢弃 0x00 并继续。如果它不是 0x00,那么它会丢弃两个字节,并将生成的字节列表转换为字节串并返回。

有什么明显的优化方法吗?我看不到它。

0 投票
4 回答
956 浏览

haskell - 在 Haskell 中,在 Lazy ByteString 上调用 length 会强制整个字符串进入内存吗?

我正在使用惰性字节串读取一个大数据流,并且想知道在解析它时是否至少还有 X 个字节可用。也就是说,我想知道字节串是否至少有 X 个字节长。

调用length它会导致整个流被加载,从而破坏使用惰性字节串的目的吗?

如果是,那么后续将是:如何在不加载整个流的情况下判断它是否至少有 X 个字节?

编辑:最初我在阅读文件的情况下询问,但了解有更好的方法来确定文件大小。但是,我需要的最终解决方案不应依赖于惰性字节串源。