パケットキャプチャのBase64エンコードバイナリがあります。 キャプチャの特定の位置に部分文字列を抽出します。UTF-16LE文字のバイト配列をRubyのutf-8文字列に正しく変換する方法
私は、Rubyでこれをやっている:
payload_decoded = Base64.decode64(payload)
file_size = payload_decoded[114..115].unpack('S*')[0]
file_fullpath = payload_decoded[124, file_size]
p file_fullpath
これがある程度機能します。 file_sizeは、抽出したい長さの整数を取得します。私はバイト配列の正しいスライスを抽出することができます。 Macの端末でこれをテストすれば、文字列は完全に表示されます。
しかし、CentOS7で実行されるアプリケーション自体のこのコードでは、すべての文字に00バイトが付いて表示されます(TはT \ x00と表示されます)。私はそれをストリングから取り除くことができますが、それを避けたいと思います。これを処理する最も正しい方法は何でしょうか?
TIA
これは望ましい結果を得るように思わ
通常、['String#encode'](https://ruby-doc.org/core-2.4.0/String.html#method-i-encode)は、開始するのに適しています。 – tadman
ありがとう、私はエンコードを使用しようとしました。しかし、その前にforce_encodingがありませんでした。私をもっと混乱させたのは、Mac端末では余分なステップが必要ないということでした。 – user2679436