Existe-t-il une fonction pour convertir une chaîne binaire en valeur binaire ou décimale? Si j'ai une chaîne binaire 000101
, que dois-je faire pour le convertir en 5
?Convertir une chaîne binaire en valeur binaire ou décimale
Répondre
Voici ce que vous pouvez essayer:
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
qui est, vous pouvez entrer les deux chaînes (en raison de as.character()
) et les valeurs binaires numériques, mais il y a quelques problèmes avec un grand nombre comme binNum
. Si je comprends bien, vous voulez aussi de convertir la chaîne binaire en valeurs binaires numériques, mais malheureusement il n'y a pas ce type de données au moins dans la base R.
Edit: Maintenant BinToDec
accepte aussi des vecteurs binaires, ce qui pourrait être une solution pour grands nombres. Fonction digitsBase()
du package sfsmisc
retourne un tel vecteur:
(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
Enfin, une autre possibilité est forfait compositions
, par exemple:
(x <- unbinary("10101010"))
[1] 170
(y <- binary(x))
[1] "10101010"
Merci, je pense que c'est une façon plus agréable que ce que j'écris ... – LifeWorks
Cette fonction calcule la version décimale avec une base flexible. Base de est égal à 2 est binaire, etc. Cela devrait fonctionner jusqu'à une base de 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
Vous pouvez utiliser la fonction packBits
(dans le paquet base
). Gardez à l'esprit que cette fonction nécessite une entrée très spécifique.
(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
Il y a aussi la fonction strtoi
(également dans le paquet base
):
strtoi("00000001001100110000010110110111", base = 2)
# [1] 20121015
strtoi("000101", base = 2)
# [1] 5
@LifeWorks, j'avais oublié la fonction 'strtoi'; s'il vous plaît voir la modification. – BenBarnes
Dans le cas où vous avez binaire chaîne , toutes les réponses précédentes sont grands. Je me retrouve souvent dans des situations où je veux encoder une combinaison de vecteurs binaires. La logique de traduction à partir d'une combinaison de 0 et de 1 à un nombre entier est toujours le même:
bincount <- function(B, base=2) { return(B %*% base^seq(0,ncol(B)-1)) }
où B est une matrice, et chaque colonne est un vecteur binaire.
Exemple:
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. Chaîne binaire en valeur décimale, formule?
- 2. Convertir une chaîne binaire en littéral binaire
- 3. Comment convertir la décimale (xx.xx) en binaire
- 4. Conversion décimale en binaire
- 5. Conversion d'une chaîne binaire en décimale?
- 6. Convertir une matrice décimale en une matrice binaire dans SciPy
- 7. convertir chaîne binaire en float
- 8. C# Convertir une grande chaîne binaire en système décimal
- 9. Convertir une chaîne binaire en un NSInteger
- 10. Convertir une chaîne binaire en caractère
- 11. Comment convertir une chaîne binaire en décimal?
- 12. convertir la valeur double en valeur binaire
- 13. Convertir une chaîne de base25 à chaîne binaire en Java
- 14. chaîne convertir en entier binaire en Python
- 15. Comment convertir une représentation binaire d'une chaîne en une chaîne?
- 16. Convertir une chaîne binaire (SecureRandom.random_bytes) en une chaîne hexadécimale?
- 17. Comment convertir la représentation décimale d'une adresse IP en binaire?
- 18. Comment convertir une chaîne binaire en nombre en Perl?
- 19. Conversion décimale en binaire en C
- 20. Chaîne C++ en code binaire/code binaire en chaîne
- 21. Comment convertir la valeur de chaîne binaire en décimal
- 22. Comment faire pour convertir NSInteger à une valeur (chaîne) binaire
- 23. Comment convertir une chaîne en ascii en binaire en C#?
- 24. Fonction binaire récursive à décimale sans pow() ou boucles
- 25. Convertir représentation de chaîne binaire d'un octet à la valeur binaire réelle en Python
- 26. C++ Conversion d'une valeur binaire en octets en une chaîne
- 27. Convertir la chaîne binaire Erlang en minuscules
- 28. Convertir un nombre en chaîne binaire
- 29. Comment convertir une valeur entière en valeur binaire en tant que chaîne en C#?
- 30. Convertir Hex Chaîne à chaîne binaire - Java
quelle langue utilisez-vous? –
Quelle langue? C'est une fonctionnalité très basique et vous pouvez écrire votre propre fonction pour cela. – Arpit
@ChandraSekharWalajapet - OP a tagué la question [tag: r]; donc je suppose que cela concerne la langue [R] (http://www.r-project.org/) – Marijn