Comment Ruby gère-t-il les octets / binaires?
Je suis en train d'envoyer une série d'octets binaires à travers un socket, pour répondre à une norme particulière mon entreprise utilise. Personne dans ma société a utilisé le Rubis pour cela avant, mais dans d'autres langues, ils envoient les données à travers un octet à la fois, (généralement avec une sorte de "pack" de la méthode).
Je ne trouve pas de toute façon à créer binaire à la volée, ou de créer des octets à tous (le plus proche que je peux trouver comment vous pouvez transformer une chaîne en octets représentant des personnages).
Je sais que vous pouvez dire quelque chose comme :
@var = 0b101010101
Mais comment aurais-je convertir une chaîne de la forme "101010101" ou l'entier résultant créé quand je fais de la chaîne.to_i(2) en binaire. Si je viens d'envoyer la chaîne à travers un socket, ne sont pas que de simplement envoyer la ASCII de "0" et "1" au lieu des caractères littéraux?
Il s'agit sûrement d'une CERTAINE façon pour ce faire nativement en Ruby?
source d'informationauteur Jenny
Vous devez vous connecter pour publier un commentaire.
Pour faire une chaîne de caractères est une suite arbitraire d'octets, de faire quelque chose comme ceci:
Le "\x" est un échappement spéciale pour coder un arbitraire d'octets à partir de l'hexagone, donc "\xE5" signifie octet 0xE5.
Puis essayez de l'envoi de cette chaîne sur le socket.
Ne sais pas si cela aide, mais vous pouvez indexer les bits d'un entier en ruby.
Ont un look à la Chaîne de caractères.décompresser méthode. Ceci est un exemple:
Cela vous donnera des valeurs entières. Il y a plusieurs façons de faire la conversion.