有没有什么函数可以把二进制串转换成二进制值或十进制值?
如果我有一个二进制字符串000101
,我应该怎么把它转换成5
呢?
发布于 2012-10-15 17:59:21
您可以使用(在base
包中) packBits
函数。请记住,此函数需要非常具体的输入。
(yy <- intToBits(5))
# [1] 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
# [26] 00 00 00 00 00 00 00
# Note that there are 32 bits and the order is reversed from your example
class(yy)
[1] "raw"
packBits(yy, "integer")
# [1] 5
还有strtoi
函数(也在base
包中):
strtoi("00000001001100110000010110110111", base = 2)
# [1] 20121015
strtoi("000101", base = 2)
# [1] 5
发布于 2016-06-19 09:43:52
base::strtoi(binary_string, base = 2)
发布于 2012-10-15 17:25:58
此函数使用灵活的基数计算十进制版本。基数等于2是二进制,依此类推。这应该直到基数为10为止。
base2decimal = function(base_number, base = 2) {
split_base = strsplit(as.character(base_number), split = "")
return(sapply(split_base, function(x) sum(as.numeric(x) * base^(rev(seq_along(x) - 1)))))
}
> base2decimal(c("000101", "00000001001100110000010110110111"))
[1] 5 20121015
https://stackoverflow.com/questions/12892348
复制相似问题