R是否有Zlib?原始膨胀函数-如何解压缩十六进制值

时间:2019-05-09 18:44:57

标签: r compression zlib inflate

我需要解压缩十六进制值并将其转换为字符串。

实际问题是我无法弄清楚如何解压缩十六进制值

十六进制不包含任何标题, 如果我将十六进制代码复制到Cyber​​Chef,则可以将其解压缩并具有原始字符串

在Cyber​​Chef中,仅需要原始充气操作 所以我希望能帮助如何在R中进行原始充气

我尝试使用所有选项的memDecompress都没有成功(例如gzip等)

更新: 这是十六进制的示例: e3 0e 71 0d 0e f1 54 c8 cb 2f 52 30 02 00 我可以使用Cyber​​Chef将其转换为字符串 “ .TESTI或2

RLdata<- sqlQuery(connection, ..... AS Varbinary(max) AS NOTEShort ......

> RLdata$NOTEshort[4268]
[[1]]
 [1] e3 0e 71 0d 0e f1 54 c8 cb 2f 52 30 02 00

> unlist(RLdata$NOTEshort[4268])
 [1] e3 0e 71 0d 0e f1 54 c8 cb 2f 52 30 02 00
> memDecompress(unlist(RLdata$NOTEshort[4268]),type = "gzip", asChar = TRUE)
Error in memDecompress(unlist(RLdata$NOTEshort[4268]), type = "gzip",  : 
  internal error -3 in memDecompress(2)

> memDecompress(unlist(RLdata$NOTEshort[4268]),type = "unknown", asChar = TRUE)
[1] "ã\016q\r\016ñTÈË/R0\002"
Warning message:
In memDecompress(unlist(RLdata$NOTEshort[4268]), type = "unknown",  :
  unknown compression, assuming none

screenshot from CyberChef (png)

2 个答案:

答案 0 :(得分:0)

必须使用python3做到这一点。 Zlib.decompress()可以解决问题。

链接到python解决方案 Read Dynamics NAV Table Metadata with SQL

答案 1 :(得分:0)

如果将其转换为Base64,然后将其解码回十六进制,我认为它可以解压缩为原始格式,但是可能已通过错误修复进行了更改。几年前曾经这样做,但是很久没使用Cyber​​Chef了,对不起