在R,什麼是一種有效的方式,以十六進制編碼的字符串轉換,如"40414243"
爲其等效的字符例如一字符串"@ABC"
?解碼以十六進制表示
例如,該代碼相當於:
library(stringr)
FromHexString <- function (hex.string) {
result <- ""
length <- str_length(hex.string)
for (i in seq(1, length, by=2)) {
hex.value <- str_sub(hex.string, i, i + 1)
char.code <- strtoi(hex.value, 16)
char <- rawToChar(as.raw(char.code))
result <- paste(result, char, sep="")
char
}
result
}
主要生產:
> FromHexString("40414243")
[1] "@ABC"
雖然上面的代碼工作,這不是有效的,在所有的,使用了大量的字符串連接的。
所以問題是如何編寫一個慣用的,高效的R函數來做這個操作。
編輯:我的樣品僅適用於ASCII編碼,而不是UTF-8編碼的字節數組。
(+1)雖然我認爲你應該把它轉換成一個功能,否則它是很難用它適當 – 2014-12-03 13:28:30
Dang-你打我由90秒*和*寫了一個更清潔的實現! – 2014-12-03 13:28:38
@DavidArenburg當然,這裏的答案很多。它留給讀者作爲練習。 – Roland 2014-12-03 13:29:56