问题标签 [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.
haskell - 生成 ByteString(或任何具有 ForeignPtr 组件的对象)的函数的纯度
由于 aByteString
是一个构造函数ForeignPtr
:
如果我有一个返回的函数ByteString
,然后给定一个输入,比如一个常量Word8
,该函数将返回一个具有非确定性 ForeignPtr 值的 ByteString - 至于该值将由内存管理器确定。
那么,这是否意味着返回 ByteString 的函数不是纯函数?如果您使用过 ByteString 和 Vector 库,显然情况并非如此。当然,如果是这样的话,它会被广泛讨论(并希望出现在谷歌搜索之上)。这种纯度是如何执行的?
问这个问题的原因是我很好奇使用 ByteString 和 Vector 对象所涉及的微妙点,从 GHC 编译器的角度来看,给定构造函数中的 ForeignPtr 成员。
haskell - 将 ByteString 转换为 Int 的最佳方法是什么?
尝试读取 ByteString 时,我总是遇到以下错误:
Prelude.read: no parse
以下是在浏览器中呈现时会导致此错误发生的代码示例:
或者更简单地说:
出于某种原因,在show bs
生成的字符串之后包含引号。因此,为了解决该错误,我必须删除引号read
。我使用从互联网复制的以下功能来做到这一点:
然后simple bs = read (sq.show bs) :: Int
按预期工作。
- 为什么会这样?
- 将 ByteString 转换为 Int 的最佳方法是什么?
haskell - Data.Text 与 Data.ByteString.Char8
Data.Text
谁能解释使用和Data.ByteString.Char8
数据类型的优缺点?使用纯 ASCII 文本会改变这些优点和缺点吗?他们的懒惰变种也改变了故事吗?
string - Haskell 如何创建 Word8?
我想编写一个简单的函数,将 a 拆分为ByteString
用作分隔符。我的尝试:[ByteString]
'\n'
这会引发错误,因为'\n'
is aChar
而不是 a Word8
,这Data.ByteString.splitWith
是预期的。
如何将这个简单的角色变成Word8
可以ByteString
玩的角色?
parsing - 如何使用 Data.ByteString 解析 7GB 文件?
我必须解析一个文件,实际上必须先阅读它,这是我的程序:
但是,编译后
使用 7G 文件调用时,执行会出现以下错误。
感谢您的回复!
haskell - 有效地将 ByteString 转换为十六进制表示
我需要能够给出 SHA512 哈希的十六进制表示。也许我只是看起来不够努力,但我可以在 Hackage 上找到任何功能来做到这一点。所以我写了一个使用unfoldrN
. 对于我的目的来说,它绝对足够快,但我想知道是否有人知道更快的方法。
我已将我的实现放在 Github 上作为要点:https ://gist.github.com/2356925 。该文件还包括一个基于Numeric.showHex
QuickCheck 测试和标准基准的简单实现。我目前的简单版本与unfoldrN
版本的结果是:
有人想尝试改进它吗?
haskell - 使用带有惰性字节字符串的 base64 字节字符串
这是我在 Haskell 中尝试做的事情:
- 以 ByteString 格式接收消息(懒惰或严格无关紧要)
- 使用 RSA 公钥加密消息
- base64 对加密消息进行编码
我正在使用的RSA 库在内部处理惰性字节字符串。但是,Base64库仅使用严格的 ByteStrings。我的应用程序使用惰性字节字符串将消息发送到网络套接字。
所以,看起来我必须在惰性字节字符串和严格字节字符串之间进行转换。这就是我所做的:
不幸的是,有时这会失败。当我解密以这种方式加密的消息时,有时会产生垃圾,然后是实际消息。我不确定问题出在哪里:是从惰性字节字符串转换为严格字节字符串还是 base64 编码步骤?还是两者兼而有之?
惰性字节字符串只是严格字节字符串块的列表。我是否通过转换隐式修改消息的长度?
请赐教。
haskell - 切换到字节串
编辑:我听从了 Yuras 和 Dave4420 的建议(谢谢)。我仍然有一些错误。更新了问题。最后我将使用meiersi的版本(谢谢)但我仍然想找到我的错误......
我有一个简单的脚本,如下所示:
它编译并工作。然后我想切换到ByteString
s。这是我的尝试:
它不起作用。我无法调试它。这是 GHC 告诉我的:
任何提示将不胜感激。
haskell - Haskell 如何将 Char 转换为 Word8
我想拆分ByteString
成这样的词:
但似乎 GHC 无法自行将字符文字转换为Word8
,所以我得到了:
Hoogle 没有找到任何具有类型签名的内容,Char -> Word8
并且Word.Word8 ' '
是无效的类型构造函数。关于如何解决它的任何想法?
sockets - 从 Socket 句柄构建的 Lazy ByteString 不能被延迟消费和 GC
我正在编写一个网络文件传输应用程序。使用 Lazy ByteString 作为中间体
从本地文件构造 BSL 时,将 BSL 放入 Socket 的句柄中:
这工作正常。内存使用是恒定的。但要从 Socket 接收数据,则写入本地文件:
我可以看到内存使用量不断上升,BSL 占用了size字节的内存。更糟糕的是,对于超出我的物理内存大小的大尺寸,操作系统会立即开始交换。
我必须递归地接收 ByteStrings 段。那没问题。
为什么BSL会这样?