typescript Any.Pack

1
2
3
4
5
6
7
8
9
10
11
12
13
IMessage body;
UserLoginRequest req = new UserLoginRequest();
req.AuthToken = "8";
 
Request sy = new Request();
sy.Token = "hello";
sy.Body = Any.Pack(req);
 
byte[] bs = sy.ToByteArray();
string hexString = BitConverter.ToString(bs);
 
Debug.Log($"len:{bs.Length}");
Debug.Log(hexString);

  

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import { readFileSync } from "fs"
import * as pb from "protobufjs"
 
 
let popContent = readFileSync("pop.json")
let popRoot = pb.Root.fromJSON(JSON.parse(popContent.toString()))
let UserRequest:pb.Type = popRoot.lookupType("ProtoSync.UserLoginRequest")
let UserMsg = UserRequest.create({ authToken: "8"})
let Userbuffer = UserRequest.encode(UserMsg).finish()
 
console.log(Userbuffer)
 
let pubContent:Buffer = readFileSync("proto.json")
let pubRoot:pb.Root = pb.Root.fromJSON(JSON.parse(pubContent.toString()))
let Request:pb.Type = pubRoot.lookupType("ProtoSync.Request")
 
 
// 创建包含 Userbuffer 的 Any 类型结构
// 创建 ByteBuffer 对象并写入 Uint8Array 数据
const byteBuffer = pb.util.newBuffer(Userbuffer.length);
byteBuffer.set(Userbuffer);
 
const anyValue = {
    type_url: "type.googleapis.com/ProtoSync.UserLoginRequest",
    value: Userbuffer,//c#里这里有个byteString类型,ts中没有,蛋疼
  };
 
 
//let reqMsg:pb.Message<{}> = Request.create({ token: "hello", body: UserMsg })
let reqMsg:pb.Message<{}> = Request.create({ token: "hello", body: anyValue })
//let reqMsg:pb.Message<{}> = Request.create({ token: "hello"})
let buffer:Uint8Array = Request.encode(reqMsg).finish()
console.log(`len:${buffer.length}`)
console.log(buffer)

  

posted @   00000000O  阅读(19)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决
历史上的今天:
2018-06-20 Unity3D -- shader语法内置函数
2018-06-20 Unity3D -- shader光照常用函数和变量
2018-06-20 Unity3D -- shader常用函数和变量
点击右上角即可分享
微信分享提示