加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

将原始字节作为R中的原始字节导入

发布时间:2020-12-13 16:00:43 所属栏目:百科 来源:网络整理
导读:我已经从数据库中将一个字符串导入到R中. db列类型是BYTEA(Postgres).为了让我按预期使用它,它应该是原始类型.相反,它是类型字符.我希望在以下意义上将其转换为raw: 字符串表示是 x1f8b080000000000 如果我使用charToRaw,它将转换为数组 5c 78 31 66 38 62
我已经从数据库中将一个字符串导入到R中. db列类型是BYTEA(Postgres).为了让我按预期使用它,它应该是原始类型.相反,它是类型字符.我希望在以下意义上将其转换为raw:

字符串表示是

x1f8b080000000000

如果我使用charToRaw,它将转换为数组

5c 78 31 66 38 62 30 38

相反,我需要它作为数组

1f 8b 08 00 00 00 00 00

我怎么做到这一点.

编辑#1回复Chris

library(RPostgreSQL)
conn <- dbConnect(dbDriver("PostgreSQL"),dbname = "somename",host = "1.2.3.4",port = 5432,user = "someuser",password = pw)
some_value <- dbGetQuery(conn,"select value from schema.key_value where key like '%somekey%' limit 1")

some_value$value
# [1] "x1f8b080000000000000

解决方法

这适用于将您描述的类型的单个字符串转换为raws矢量.

## The string I think you're talking about
dat <- "x1f8b080000000000"
cat(dat,"n")
## x1f8b080000000000

## A function to convert one string to an array of raw
f <- function(x)  {
    ## Break into two-character segments
    x <- strsplit(x,"(?<=.{2})",perl=TRUE)[[1]]
    ## Remove the first element,"x"
    x <- x[-1]
    ## Complete the conversion
    as.raw(as.hexmode(x))
}

## Check that it works
f(dat)
##  [1] 1f 8b 08 00 00 00 00 00

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读