Próbuję wysłać serię binarnych bajtów przez gniazdo, aby spełnić określony standard, którego używa moja firma. Nikt w mojej firmie nie używał do tego Ruby, ale w innych językach przesyła dane po jednym bajcie na raz (zwykle z jakąś metodą "pack").W jaki sposób Ruby obsługuje bajty/pliki binarne?
Nie mogę znaleźć pliku binarnego w locie ani tworzyć bajtów (najbliżej mogę znaleźć, jak przekształcić ciąg znaków w bajty reprezentujące jego znaki).
Wiem, że można powiedzieć coś w stylu:
@ var = 0b101010101
Ale w jaki sposób przekonwertować ciąg w postaci „101010101” lub otrzymanej liczby całkowitej utworzonej kiedy robię string.to_i (2) do rzeczywistego pliku binarnego. Jeśli po prostu wyślę ciąg przez gniazdo, czy to nie będzie po prostu wysyłać ASCII dla "0" i "1" zamiast literalnych znaków?
Z pewnością istnieje sposób, aby zrobić to natywnie w Ruby?
Dlaczego w łańcuchu binarnym jest jakiś znak "/"? – why
Jest całkiem możliwe, że łańcuch binarny ma bajt o wartości 0x2F (47). To jest kodowanie ASCII "/", więc jeśli "sprawdzisz" ciąg Ruby zwykle wypisze "/". To samo dotyczy każdej postaci ASCII. Ruby tak naprawdę nie wie, czy twój ciąg znaków jest "ciągiem binarnym", to że Ruby jest ciągiem bajtów (z wyjątkiem 1.9 dodało trochę informacji o kodowaniu). –
Dzięki! bardzo mi to pomaga – why