在R语言中如何从十六进制小端字节获取32位数值?
在R中将小端序原始字节转换为整数658
你可以通过两种简洁的方法将已读取的原始字节转换为目标整数658:
方法1:直接用readBin解析
利用readBin函数,指定小端序、4字节(32位)的整数类型即可完成转换:
# 读取原始字节(你的现有代码) raw_bytes <- readBin(img_path, "raw", 20)[17:20] # 转换为小端序无符号32位整数 target_num <- readBin(raw_bytes, what = "integer", n = 1, size = 4, endian = "little", signed = FALSE)
参数说明:
size = 4:对应32位整数的4字节长度endian = "little":明确按小端序规则解析字节signed = FALSE:适配无符号整数解析(此处设为TRUE也能得到相同结果,因为658在32位有符号整数的正数值范围内)
方法2:反转字节后转十六进制字符串
小端序的字节顺序需要反转后才能匹配常规十六进制数值的排列逻辑,再通过strtoi完成转换:
# 反转字节顺序并拼接成连续的十六进制字符串 hex_str <- paste(rev(raw_bytes), collapse = "") # 将十六进制字符串转换为十进制整数 target_num <- strtoi(hex_str, base = 16)
两种方法最终都会得到结果658。
内容的提问来源于stack exchange,提问作者colej1390
相关产品推荐
相关产品推荐

