将存储为字符的raw写入文件

时间:2016-02-29 16:12:21

标签: r

我对自己认为应该相对简单的事情感到难过。

我有一个代表二进制字符串的字符串。例如:

x <- as.character(charToRaw("Hello World"))

我想将x写入文件,但无法反转创建x以获取原始内容的过程。我原以为它会像

一样简单
writeBin(as.raw(x), 
         con = "filename.txt")

但这不会生成带有“Hello World”文本的文件。

也没有
writeBin(x,
         con = "filename.txt")

当我尝试直接反转时,我收到错误

> x <- as.character(charToRaw("Hello World"))
> x
[1] "48" "65" "6c" "6c" "6f" "20" "57" "6f" "72" "6c" "64"

> rawToChar(as.raw(x))
Error in rawToChar(as.raw(x)) : 
  embedded nul in string: '0A\0\0\0\0249\0H\0@'
In addition: Warning messages:
1: In rawToChar(as.raw(x)) : NAs introduced by coercion
2: In rawToChar(as.raw(x)) :
  out-of-range values treated as 0 in coercion to raw

上下文

我知道这是一种解决问题的奇怪方法。我在一些奇怪的约束下,我将填充订单的数据保存为SQL数据库作为JSON字符串。用户可以在请求中包含附件,因此我将原始向量转换为字符串以存储在JSON字符串中。我在将字符串重构为原始矢量时遇到问题,原始矢量可以作为原始文件的副本。

1 个答案:

答案 0 :(得分:2)

这会让你得到相反的操作:

x <- as.character(charToRaw("Hello World"))
rawToChar(as.raw(as.hexmode(x)))
## [1] "Hello World"