1

Google プロトコル バッファを使用しています。メッセージの前にサイズを 16 ビット int として付ける必要があります。16 ビット int を書き込むプロトコル バッファ メソッドが見つかりませんでした

私は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())

それは正しい方法ですか?(正直、気持ち悪い)

ありがとうございました

4

1 に答える 1

1

正確に 2 バイトが必要であることがわかっている場合は、直接実行できます。

int len = protomessage.toByteArray().length;
output.writeRawBytes(new Byte[]{
        (byte) ((len >>> 8) & 0xff), 
        (byte) (len & 0xff)
     });

これはオーバーフローをチェックしませんが。

于 2012-05-03T12:48:20.380 に答える