2017-07-15 3 views
0

J'essaie de l'atteindre par des méthodes différentes, mais encore il donne une erreur alors comment utiliser .ord pour y parvenir ou y'a-t-il un autre moyen de l'atteindre? Fondamentalement, je veux obtenir la valeur ASCII de chaque caractère de la chaîne, puis convertir chacun d'eux en binaire en utilisant .to_s(2) Voici mon code ↓Comment imprimer la valeur ASCII de caractères dans une chaîne sous forme de nombres binaires?

input = gets.chomp.split("").each { |s| s.ord.to_i } 
puts input.to_s(2) 

Répondre

1

Essayez celui

gets.chomp.chars.each { |ch| puts ch.ord } 

chars méthode est Une autre façon de le faire

+0

Pouvez-vous donner un code pour que sa sortie soit comme a = 1100001 b = 1100010 .... Voici enfin le code ↓ input = gets.chomp.chars.each {| ch | met ch.ord.to_s (2)} – user8269563

+0

sûr. 'input = gets.chomp.chars.each {| ch | met "# {ch} = # {ch.ord.to_s (2)}"} ' – Ursus

1

Vous pouvez utiliser each_codepoint pour parcourir les points de code de la chaîne et printf avec %b pour le formater en tant que nombre binaire.

'foo bar'.each_codepoint { |c| printf("%07b\n", c) } 

sortie:

1100110 
1101111 
1101111 
0100000 
1100010 
1100001 
1110010 

Le préfixe 07 définit la largeur minimale -7 et des plots de bits manquants avec 0 (voir sprintf pour les options de formatage). Il pourrait y avoir des caractères avec plus de 7 bits, cependant.