1
私はGoogleプロトコルバッファを使用しています。私のメッセージに16ビット整数としてサイズを付ける必要があります。 16ビットのintを書き込むプロトコルバッファメソッドが見つかりませんでしたCodedOutputStreamに短い整数を追加するためのきれいな方法
私はJavaの知識がほとんどなく、C++の人です。
// protomessage is a protocol buffer message
// assuming protomessage.toByteArray().length < short.MAX_value
ByteArrayOutputStream rawOutput = new ByteArrayOutputStream();
CodedOutputStream output = CodedOutputStream.newInstance(rawOutput);
ByteBuffer b = ByteBuffer.allocate(2);
b.order(ByteOrder.LITTLE_ENDIAN);
b.putShort((short) (protomessage.toByteArray().length));
output.writeRawBytes(b.array())
が正しい方法ということです:
これまでのところ、私は使ってそうするのですか?
を(正直それが右に感じるdoesntの)あなたが直接あなたが正確に2つのバイトが必要とされている知っている与えられ、それを行うことができ
私はこの回答を受け入れるでしょう、あなたの解決策を私の上にお勧めしますか?または両方とも問題ありませんか? – Pierre
鉱山はおそらく速いですが、あなたのものはいくらか読みやすくなります。また私は私のデバッグしていない:-) – artbristol