回答
這裏是你可以嘗試什麼:
binStr <- "00000001001100110000010110110111" # 20121015
(binNum <- 00000001001100110000010110110111) # 20121015
[1] 1.0011e+24
binVec <- c(1,0,1,0,0,0,1,1,0,0,0,0,0,0,1,0,0,0,0,0,0,1) # 2670721
shortBin <- 10011010010 # 1234
BinToDec <- function(x)
sum(2^(which(rev(unlist(strsplit(as.character(x), "")) == 1))-1))
BinToDec(binStr)
[1] 20121015
BinToDec(binNum)
[1] 576528
BinToDec(binVec)
[1] 2670721
BinToDec(shortBin)
[1] 1234
也就是說,你可以輸入兩個字符串(因爲as.character()
)和數字的二進制值,但也有一些問題,大量像binNum
。據我瞭解,你也想二進制字符串轉換爲數字二進制值,但遺憾的是,至少在基礎R.沒有這樣的數據類型
編輯:現在BinToDec
也接受二元載體,這可能是一個解決方案大數。從包功能digitsBase()
sfsmisc
返回這樣的載體:
(vec <- digitsBase(5, base= 2, 10))
Class 'basedInt'(base = 2) [1:1]
[,1]
[1,] 0
[2,] 0
[3,] 0
[4,] 0
[5,] 0
[6,] 0
[7,] 0
[8,] 1
[9,] 0
[10,] 1
BinToDec(vec)
[1] 5
最後,另一個可能性是包compositions
,例如:
(x <- unbinary("10101010"))
[1] 170
(y <- binary(x))
[1] "10101010"
謝謝,我認爲這是比我寫的更好的方法... – LifeWorks
此函數計算十進制版本與柔性基底。基本等於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
基地你可以使用packBits
功能(在base
包)。請記住,該功能需要非常具體的輸入。
(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
@LifeWorks,我忘記了'strtoi'函數;請參閱編輯。 – BenBarnes
在你有二進制字符串,所有以前的答案是偉大的情況。我經常發現自己處於想要編碼二進制向量組合的情況。從0和1的一個整數的組合翻譯的邏輯總是相同的:
bincount <- function(B, base=2) { return(B %*% base^seq(0,ncol(B)-1)) }
其中B是一個矩陣,每一列是二元載體。
例子:
isBig <- c(0, 1, 0, 1)
isRed <- c(0, 0, 1, 1)
B = cbind(isBig,isRed)
bincount(B)
# 0 1 2 3
base::strtoi(binary_string, base = 2)
- 1. 將二進制十進制轉換爲十六進制,二進制和八進制字符串
- 2. 將二進制轉換爲十進制
- 3. 將十進制轉換爲二進制
- 4. 如何將數字(十進制)轉換爲二進制(二進制)數字和從二進制到十進制?
- 5. 將十六進制字符串轉換爲二進制
- 6. 將二進制長字符串轉換爲十六進制c#
- 7. 將ascii字符十進制值的字符串轉換爲二進制值
- 8. 將二進制字符串轉換爲二進制文字
- 9. 功能爲二進制字符串轉換爲十進制
- 10. 將十進制轉換爲十六進制/二進制
- 11. 將十六進制轉換爲二進制到十六進制?
- 12. 將十進制數轉換爲二進制/十六進制/八進制符號
- 13. 將字符串轉換爲二進制,並在Python中將二進制轉換爲十進制?
- 14. 將二進制字符串轉換爲二進制
- 15. Python將二進制字符串轉換爲二進制int
- 16. 將十六進制字符串轉換爲二進制字符串,顯示所有4位十六進制值
- 17. Python3 ASCII十六進制轉換爲二進制字符串
- 18. Python從二進制字符串轉換爲十六進制
- 19. 轉換二進制字符串爲十六進制
- 20. C++長十六進制字符串轉換爲二進制
- 21. 轉換十六進制字符串爲二進制的SQL Server
- 22. 從二進制轉換爲十六進制字符串
- 23. 蟒蛇十六進制二進制轉換爲字符串
- 24. 從二進制字符串轉換爲十進制?
- 25. 從十進制轉換爲二進制
- 26. 二進制轉換爲十進制 - understaing
- 27. 從二進制轉換爲十進制
- 28. 十六進制轉換爲二進制
- 29. 從二進制轉換爲十進制
- 30. 十六進制轉換爲二進制
你使用哪種語言? –
哪種語言?這是一個非常基本的功能,你可以爲它編寫你自己的函數.. – Arpit
@ChandraSekharWalajapet - OP標記了問題[tag:r];所以我想這涉及到語言[R](http://www.r-project.org/) – Marijn