繁体   English   中英

在十六进制缓冲区的原始转换中将一个 position 移到后面

[英]Shift one position behind in a raw conversion from a hex buffer

我一直在尝试从数据库中的 blob 列中提取一个表,该表在此过程中被转换为十六进制字符串。 我的所有工作都使用 R。 下面突出显示了 BLOB 数据列的捕获:

DATA 列是来自数据库中 BLOB 列的十六进制字符串

在此处输入图像描述

问题是,以原始形式检查的数据向前移动了一个 position,当我进行最终转换时,将转换完全修改为我的数字 arrays。 下面突出显示了问题的捕获:

第一个chunk是正确的数据,第二个chunk是前移一个position的数据

在此处输入图像描述

我的问题是,如何将数据 position 移到后面?

R 或 Python 中是否有任何 package 能够进行这种转变?

我一直在尝试使用来自 wkb package 的 hex2raw function 但没有成功。 与 Python 中的解码功能相同。

在 R 中,您可以用数字“移动”您的数据

data <- as.raw(sample(256,10) - 1)
data2 <- as.raw((as.integer(data) * 16L) %% 256L + ( c(data[-1], 0L) %/% 16L)  )


data
#>  [1] 89 af 4f 94 66 e8 84 c1 93 01
data2
#>  [1] 9a f4 f9 46 6e 88 4c 19 30 10

编辑

另一种方式:

data3 <- as.raw(
  as.integer(rawShift(data, 4)) + 
  as.integer(rawShift(c(data[-1],as.raw(0)), -4)))


暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM