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

haskell - 生成 ByteString(或任何具有 ForeignPtr 组件的对象)的函数的纯度

由于 aByteString是一个构造函数ForeignPtr

如果我有一个返回的函数ByteString,然后给定一个输入,比如一个常量Word8,该函数将返回一个具有非确定性 ForeignPtr 值的 ByteString - 至于该值将由内存管理器确定。

那么,这是否意味着返回 ByteString 的函数不是纯函数?如果您使用过 ByteString 和 Vector 库,显然情况并非如此。当然,如果是这样的话,它会被广泛讨论(并希望出现在谷歌搜索之上)。这种纯度是如何执行的?

问这个问题的原因是我很好奇使用 ByteString 和 Vector 对象所涉及的微妙点,从 GHC 编译器的角度来看,给定构造函数中的 ForeignPtr 成员。

0 投票
2 回答
8550 浏览

haskell - 将 ByteString 转换为 Int 的最佳方法是什么?

尝试读取 ByteString 时,我总是遇到以下错误:
Prelude.read: no parse

以下是在浏览器中呈现时会导致此错误发生的代码示例:

或者更简单地说:

出于某种原因,在show bs生成的字符串之后包含引号。因此,为了解决该错误,我必须删除引号read。我使用从互联网复制的以下功能来做到这一点:

然后simple bs = read (sq.show bs) :: Int按预期工作。

  1. 为什么会这样?
  2. 将 ByteString 转换为 Int 的最佳方法是什么?
0 投票
1 回答
2842 浏览

haskell - Data.Text 与 Data.ByteString.Char8

Data.Text谁能解释使用和Data.ByteString.Char8数据类型的优缺点?使用纯 ASCII 文本会改变这些优点和缺点吗?他们的懒惰变种也改变了故事吗?

0 投票
1 回答
6846 浏览

string - Haskell 如何创建 Word8?

我想编写一个简单的函数,将 a 拆分为ByteString用作分隔符。我的尝试:[ByteString]'\n'

这会引发错误,因为'\n'is aChar而不是 a Word8,这Data.ByteString.splitWith是预期的。

如何将这个简单的角色变成Word8可以ByteString玩的角色?

0 投票
2 回答
537 浏览

parsing - 如何使用 Data.ByteString 解析 7GB 文件?

我必须解析一个文件,实际上必须先阅读它,这是我的程序:

但是,编译后

使用 7G 文件调用时,执行会出现以下错误。

感谢您的回复!

0 投票
3 回答
2107 浏览

haskell - 有效地将 ByteString 转换为十六进制表示

我需要能够给出 SHA512 哈希的十六进制表示。也许我只是看起来不够努力,但我可以在 Hackage 上找到任何功能来做到这一点。所以我写了一个使用unfoldrN. 对于我的目的来说,它绝对足够快,但我想知道是否有人知道更快的方法。

我已将我的实现放在 Github 上作为要点:https ://gist.github.com/2356925 。该文件还包括一个基于Numeric.showHexQuickCheck 测试和标准基准的简单实现。我目前的简单版本与unfoldrN版本的结果是:

有人想尝试改进它吗?

0 投票
1 回答
917 浏览

haskell - 使用带有惰性字节字符串的 base64 字节字符串

这是我在 Haskell 中尝试做的事情:

  • 以 ByteString 格式接收消息(懒惰或严格无关紧要)
  • 使用 RSA 公钥加密消息
  • base64 对加密消息进行编码

我正在使用的RSA 库在内部处理惰性字节字符串。但是,Base64库仅使用严格的 ByteStrings。我的应用程序使用惰性字节字符串将消息发送到网络套接字。

所以,看起来我必须在惰性字节字符串和严格字节字符串之间进行转换。这就是我所做的:

不幸的是,有时这会失败。当我解密以这种方式加密的消息时,有时会产生垃圾,然后是实际消息。我不确定问题出在哪里:是从惰性字节字符串转换为严格字节字符串还是 base64 编码步骤?还是两者兼而有之?

惰性字节字符串只是严格字节字符串块的列表。我是否通过转换隐式修改消息的长度?

请赐教。

0 投票
3 回答
846 浏览

haskell - 切换到字节串

编辑:我听从了 Yuras 和 Dave4420 的建议(谢谢)。我仍然有一些错误。更新了问题。最后我将使用meiersi的版本(谢谢)但我仍然想找到我的错误......

我有一个简单的脚本,如下所示:

它编译并工作。然后我想切换到ByteStrings。这是我的尝试:

它不起作用。我无法调试它。这是 GHC 告诉我的:

任何提示将不胜感激。

0 投票
5 回答
14105 浏览

haskell - Haskell 如何将 Char 转换为 Word8

我想拆分ByteString成这样的词:

但似乎 GHC 无法自行将字符文字转换为Word8,所以我得到了:

Hoogle 没有找到任何具有类型签名的内容,Char -> Word8并且Word.Word8 ' '是无效的类型构造函数。关于如何解决它的任何想法?

0 投票
2 回答
143 浏览

sockets - 从 Socket 句柄构建的 Lazy ByteString 不能被延迟消费和 GC

我正在编写一个网络文件传输应用程序。使用 Lazy ByteString 作为中间体

从本地文件构造 BSL 时,将 BSL 放入 Socket 的句柄中:

这工作正常。内存使用是恒定的。但要从 Socket 接收数据,则写入本地文件:

我可以看到内存使用量不断上升,BSL 占用了size字节的内存。更糟糕的是,对于超出我的物理内存大小的大尺寸,操作系统会立即开始交换。

我必须递归地接收 ByteStrings 段。那没问题。

为什么BSL会这样?