protobuf编码示例java [duplicate]

问题描述 投票:-1回答:1

这个问题在这里已有答案:

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

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

以下是Google Protocol Buffers文档中的示例,

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      

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

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

java eclipse encoding protocol-buffers
1个回答
-1
投票

尝试

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

要么

System.out.println(Arrays.toString(arr));
© www.soinside.com 2019 - 2024. All rights reserved.