protobuf编码示例java

时间:2018-01-02 17:26:36

标签: java eclipse encoding protocol-buffers

我是编程新手。对不起,如果这是一个太初学的问题。

我正在研究家庭作业的协议缓冲区。 我不知道如何从Message获取字节。

以下是Google协议缓冲区文档中的示例,

message Test1 {
  required int32 a = 1;
}

在应用程序中,创建Test1消息并将其设置为150.然后,将消息序列化为输出流。如果您能够检查编码的消息,则会看到三个字节:

08 96 01

我正在使用Eclipse和Java。 我在下面创建了代码。

package com.example.tutorial;

import java.util.Scanner;

import com.example.tutorial.TestProtos.Test1;
import com.example.tutorial.TestProtos.Test1OrBuilder;

public class TestByte {
    public static void main(String[] args) throws Exception{

        Scanner sc = new Scanner(System.in);
        System.out.println("Enter a number:");  
        int a = sc.nextInt();
        Test1.Builder t = Test1.newBuilder();
        Test1 obj = t.setA(a).build();
        byte[] arr = obj.toByteArray();

        System.out.println("byte: "+arr);

当我输入'150'时,它给了我

byte: [B@45ee12a7      

我希望获得三个字节,例如google文档中的示例。 我问如何使用协议缓冲区从编码消息中获取字节。

谁能告诉我怎么样?谢谢!!

1 个答案:

答案 0 :(得分:-1)

尝试

System.out.println(Arrays.toString(obj));

OR

System.out.println(Arrays.toString(arr));