Rubyでバイナリデータを扱う
Stringクラスにバイナリデータを突っ込んでも正しく動作するようです。(というか、Stringクラス以外でどうすればいいのかよくわからないのですが)
data = [] data << [1].pack('c') # ASCII data << [234].pack('N') # ネットワークバイトオーダー(32bit / unsigned long) data << "test" data.join
としても、元のバイト列は失われない。当然なのかもしれないけど、C言語の文字列に慣れるとなんか不安。まだちゃんと検証できてないのですが。
結果のバイナリコードはこんな感じ。
0100 0000 ea74 6573 74
[0,1,-1].pack("N*") => "\000\000\000\000\000\000\000\001\377\377\377\377"
と書いてあるが、ちゃんと最初に1バイト分0の列があることに注意。