用 NULL 值解码 R 中的十六进制

Decode hex in R with NUL values

很明显R不允许空字符:

c("abc[=10=]d")
Error: nul character not allowed (line 1)

我正在尝试解码十六进制字符串并将结果写入文件。 NUL 对我来说很重要。 目前,我已经写了这么多:

# Example of hex string
msg <- '504F03032C0000000803F8'
hex <- sapply(seq(1, nchar(as.character(msg)), by=2), 
              function(x) substr(msg, x, x+1))

# trying to decode hex
x <- NULL
for( i in 1:length(hex)){
  x[i] <- as.character(ifelse(hex[i] == "00", as.raw(0), rawToChar(as.raw(strtoi(hex[i], 16L)))))
}

write(paste0(x, collapse = ""), "test1")`

我如何更改 as.raw(0) 文件中我会看到 NUL 值而不是 00 的部分?甚至可以在 R 中这样做吗?也许我应该换成其他程序,比如 python?

我不明白你为什么要将这些值转换为字符。为什么不将它们保留为数值,并使用 writeBin 将它们写出来? R对此有很好的支持。例如,

# Example of hex string
msg <- '504F03032C0000000803F8'

# Use solution from  to split
hex <- substring(msg, seq(1, nchar(msg), 2), seq(2, nchar(msg), 2))

# trying to decode hex
x <- strtoi(hex, 16)  # Converts to integer vector
writeBin(x, "test1", size=1)