[code=“Ruby”]def send_msg(stream, msg)
len = msg.length #stream.write(len.to_s(2).to_i)
stream.write(msg)
stream.close()
end
PRZYKŁAD UŻYCIA
file = File.open(“plik.txt”, “w”)
stream = IO.new(file.to_i, “w”)
send_msg(stream, “Polskie znaki: ęóąśłżźćń”)[/code]
i chcialbym zeby pierwsze 4 znaki(bajty) zapisane w strumieniu (w powyższym przyakładzie pliku) były zapisane jako “raws bytes”. zakomentowana linijka oczywiście nie działa
nie znam za dobrze R. a muszę to w nim właśnie napisać… jakies propozycje?
jak chcesz w trybie bitowym to nie w a wb, dokumentacja File i IO, ponownie odsyłam
ech poczytaj ta dokumentację, bo niedługo niekomu może się już nie chcieć na podstawy z dokumentacji odpowiadać.
[code=ruby]#!/usr/bin/ruby
file = File.new(‘test.txt’, “wb”)
tekst = “Ala ma kota”
file.write(tekst[0…4])[/code]
gotar@laptop ~/Tmp $ cat test.txt
Ala mgotar@laptop ~/Tmp $
Ps
To nie jakaś JAVA dziwna, nie musisz takich chorych konstrukcji robić jak widzisz powyżej ;]
Pierwsza kwestia, o której zapomniałeś, to: “której wersji Rubiego używasz?”. Mogą być tutaj pewne różnice pomiędzy 1.8 a 1.9. Nie wiem, co dokładnie robi kod w Javie, ale:
len.to_s(2) zwraca długość zapisaną w systemie dwójkowym, np. 23.to_s(2) daje “10111”
“10111”.to_i zamienia to na liczbę 10111, która przy zapisie do strumienia jest najpewniej konwertowana ponownie na ciąg “10111”
Jeśli napiszesz coś więcej poza “nie działa” to może będzie łatwiej znaleźć przyczynę problemu.