问题标签 [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 投票
2 回答
1071 浏览

parsing - Haskell 中的字节串

所以我正在尝试编写一个可以将java类文件作为字节码读取的程序。为此,我使用 Data.Binary 和 Data.ByteStream。我遇到的问题是因为我对 Haskell 很陌生,我在实际使用这些工具时遇到了麻烦。

到目前为止,这就是我想出的,我担心它甚至不是在正确的轨道上。虽然我知道这个问题非常笼统,但我希望能对我应该做的阅读提供一些帮助。

0 投票
1 回答
901 浏览

parsing - Haskell 将 ByteString 转换为 UTC 时间

我一直在尝试在 Haskell 中创建一个函数来获取一个日期时间的 ByteString,并将其转换为 UTC 时间,同时考虑到原始编码的时区。我对 Haskell 很陌生,所以我可能犯了一个非常基本的错误。

我得到的错误是:

0 投票
1 回答
397 浏览

networking - haskell 网络 io hgetline

我想读取句柄上的所有数据,然后阻塞等待更多数据。当流中有 '\n' 字符时,listen1 停止。listen2 有效,可以通过模仿 hGetNonBlocking 的代码使其完全通用。做这个的最好方式是什么?

0 投票
2 回答
444 浏览

arrays - 如何将 (StorableArray (Int, Int) Word8) 转换为惰性 ByteString?

我正在尝试加载 PNG 文件,获取未压缩的 RGBA 字节,然后将它们发送到 gzip 或 zlib 包。

pngload 包以 (StorableArray (Int, Int) Word8) 形式返回图像数据,压缩包采用惰性字节字符串。因此,我正在尝试构建一个 (StorableArray (Int, Int) Word8 -> ByteString) 函数。

到目前为止,我已经尝试了以下方法:

这会导致堆栈内存不足,所以很明显我做错了什么。我可以用 Ptr 和 ForeignPtr 尝试更多的东西,但是那里有很多“不安全”的功能。

任何帮助将不胜感激;我很困惑。

0 投票
3 回答
26784 浏览

string - 将 String 转换为 ByteString 的最佳方法是什么

在 Haskell 中将 String 转换为 ByteString 的最佳方法是什么?

我对这个问题的直觉反应是

但这似乎并不令人满意。

0 投票
2 回答
3335 浏览

haskell - 在haskell中读取二进制文件

我怎么能写一个定义类似于...的函数

我已经搞定了 Haskell 的功能部分,但是类型系统和单子仍然让我头疼。有人可以写并解释该功能如何对我起作用吗?

0 投票
1 回答
295 浏览

parsing - Haskell中Data.ByteString.Lazy.Char8的解析器?

您好我面临以下问题,我必须重新编写现有代码以提高他的性能。旧版本使用的是这样定义的解析器:

解析文件中的行。但它太慢了,需要大量内存才能实现逐行计算。为了改进该代码,我决定使用 Data.ByteString.Lazy.Char8 而不是 String,但我不知道如何处理解析器,是否可以以这种方式定义解析器?

或者,是否有专门用于此类工作的解析器包?

感谢回复

0 投票
2 回答
854 浏览

haskell - Haskell ByteStrings - 最终将大文件加载到内存中

问候,

我试图理解为什么我看到整个文件使用以下程序加载到内存中,但是如果您注释掉“(***)”下面的行,那么程序会在恒定(大约 1.5M)空间中运行。

编辑:该文件大约 660MB,第 26 列中的字段是一个日期字符串,如“2009-10-01”,并且有 100 万行。该过程在到达“getLine”时使用了大约 810MB

我是否认为它与使用“split”拆分字符串有关,并且以某种方式从文件中读取的底层 ByteString 不能被垃圾收集,因为它仍然被引用?但如果是这样,那么我认为 BS.copy 会解决这个问题。任何如何强制计算的想法 - 我似乎无法将“seq”放入正确的位置以产生效果。

(注意源文件是制表符分隔的行)

提前致谢,

凯文

0 投票
5 回答
6961 浏览

haskell - Haskell Bytestrings:如何进行模式匹配?

我是 Haskell 新手,在弄清楚如何模式匹配ByteString. 我的[Char]函数版本如下所示:

正如预期的那样,这会从字符串中过滤掉所有出现的“ab”。但是,我在尝试将其应用于ByteString.

天真的版本

产量

[]显然是罪魁祸首,因为它是常规String而不是ByteString. 插入BS.empty似乎是正确的,但在绑定位置给出了“限定名称:BS.empty”。让我们尝试

这给出了“模式中的解析错误” (x cons empty)。我真的不知道我还能在这里做什么。

作为旁注,我试图用这个函数做的是从一些文本中过滤掉一个特定的 UTF16 字符。如果有一种干净的方法可以实现这一点,我很想听听,但是这种模式匹配错误似乎是新手haskeller 应该真正理解的。

0 投票
5 回答
408 浏览

haskell - 有效输出数字

我想将用空格分隔的积分列表打印到标准输出。列表生成速度很快,所以我尝试用序列 [1..200000] 来解决这个问题。

在 C 中,我可以像这样实现它:

我可以实现的 Haskell 中最快的解决方案大约慢了三倍:

我在某些方面尝试了 ByteStrings,但有了它们,它变得更慢了。最大的问题似乎是使用 show 将整数转换为字符串(或转换为 ByteStrings)。

有什么建议可以在不与 C 接口的情况下加快速度吗?它不应该变得复杂(尽可能简短和美观,使用其他 Haskell 模块就可以了)。