我想在我的项目中使用google protobuf。

关键是我必须设置消息的第一个字节,因为底层代码基于第一个字节拒绝或接受消息,并且不了解protobuf。

所以这个页面说
https://developers.google.com/protocol-buffers/docs/proto#scalar
我必须使用与Java中的ByteString对应的字节字段。


  bytes可以包含任意字节序列。字符串ByteString


但是我不知道如何从int值创建ByteString。我已经尝试过这种方式:

ByteBuffer eventTypeBuffer = ByteBuffer.allocate(1);
eventTypeBuffer.put(0x1c);
ByteString eventType = ByteString.copyFrom(eventTypeBuffer);
System.out.println(eventType.size() + " " + eventTypeBuffer.array().length);

Header.Builder mh = Header.newBuilder();
mh.setEventType(eventType);


无法正常工作,println给出0 1

最佳答案

ByteBuffer eventTypeBuffer = ByteBuffer.allocate(1);
eventTypeBuffer.put(0x1c);
eventTypeBuffer.flip();
ByteString eventType = ByteString.copyFrom(eventTypeBuffer);
System.out.println(eventType.size() + " " + eventTypeBuffer.array().length);

Header.Builder mh = Header.newBuilder();
mh.setEventType(eventType);

09-07 05:55