R语言如何将"<c2>"字符串转换为十六进制原始值0xc2
问题原因
R 中字符串字面量里的\x是转义序列标识,仅在代码中直接写字符串字面量时生效。你通过字符串替换得到的\x只会被识别为普通的「反斜杠+字母x」两个独立字符,不会被解析为十六进制转义前缀,这就是你得到双反斜杠打印结果的原因。
解决方案
不需要手动拼接转义字符,先提取<>包裹的十六进制串,直接用R内置的十六进制处理函数转换即可:
- 先去掉原始字符串前后的
<和>,拿到纯十六进制内容 - 用
hexToRaw()直接转成目标raw值,如果需要得到对应字符再用rawToChar()转换即可
original_string <- "<c2>" # 提取<>中间的纯十六进制内容 hex_part <- gsub("[<>]", "", original_string) # 直接转换为目标raw值 target_raw <- hexToRaw(hex_part) # 验证和预期的0xc2完全一致 identical(target_raw, as.raw(0xc2)) # 如果需要得到对应的"\xc2"字符串,再做一次raw转字符 good_hex_string <- rawToChar(target_raw) identical( charToRaw(good_hex_string), as.raw(0xc2) )
该方案同时支持多段连续十六进制转换的场景,比如输入<c2><a1><b3>也可以直接完成转换,不需要额外修改逻辑。
内容的提问来源于stack exchange,提问作者Edgar Manukyan
相关产品推荐
相关产品推荐

