那些很基础的教程之Protobuf

503 阅读1分钟

下载地址

github.com/protocolbuf…

release 仓库 选择最新的包下载(我不管,我就要最新的)

image.png

安装

cd protobuf-3.17.3
cp -r include/ /usr/local/include/
cp -r bin/ /usr/local/bin/

搞定,如此丝滑~

image.png

使用

UserPB.info

syntax = "proto3";

option java_outer_classname = "UserPB";
option java_package = "com.jiuling.resource.proto";

message info{
    string addr = 1;    //地址
    string group = 2;   //分组
}

image.png

ProtoBufTest

 public static void main(String[] args) {

        UserPB.info info = UserPB.info.newBuilder().setAddr("测试").setGroup("group1").build();

        System.out.println(info);
        byte[] data = info.toByteArray();
        try {
            UserPB.info p2 = UserPB.info.parseFrom(data);
            System.out.println(p2);
        } catch (InvalidProtocolBufferException e) {
            e.printStackTrace();
        }
    }

输出结果:

image.png

处理中文异常

 public static void main(String[] args) {

        UserPB.info info = UserPB.info.newBuilder().setAddr("测试").setGroup("group1").build();
        System.out.println(TextFormat.printer().escapingNonAscii(false).printToString(info));

        System.out.println(info.getAddr());
//        System.out.println(info);
        byte[] data = info.toByteArray();
        try {
            UserPB.info p2 = UserPB.info.parseFrom(data);
            System.out.println(TextFormat.printer().escapingNonAscii(false).printToString(p2));
            System.out.println(p2.getAddr());
        } catch (InvalidProtocolBufferException e) {
            e.printStackTrace();
        }
    }

image.png

搞定

主要是记录一些,很基础,但是你就是要去搜,就很烦的基操~