首页 > 其他分享 >typescript Any.Pack

typescript Any.Pack

时间:2023-06-20 10:44:06浏览次数:35  
标签:typescript create Request pb let Userbuffer Any Pack

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);

  

 

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)

  

标签:typescript,create,Request,pb,let,Userbuffer,Any,Pack
From: https://www.cnblogs.com/nafio/p/17492970.html

相关文章

  • [Typescript 5.2] New Keyword: using
    TypeScript5.2willintroduceanewkeyword-'using'-thatyoucanusetodisposeofanythingwitha Symbol.dispose functionwhenitleavesscope.Thiscansimpfiythetry/finallyrelatedcode:function*g(){consthandle=acquireFileHa......
  • 学不动也要学,Jetpack Compose入门到入坟
    前言在2019年的Google/IO大会上,亮相了一个全新的Android原生UI开发框架JetpackCompose。与IOS的SwiftUI一样,JetpackCompose也是一个声明式的UI框架,随着Android和IOS两大移动平台相继推出了自己平台专属的声明式UI框架,标志着整个行业已开始转向声明性界面模......
  • Jetpack组件库(含Jetpack Compose)从入门到精通全家桶【附Demo】
    前言开发应用程序就像搭积木。我们对产品业务及功能模块的划分和封装,就像在搭建积木一样。积木不能太大,这不利于修改和拆解;积木也不能太小,否则管理起来可能会很混乱。只有基于稳健、合理的架构,项目才能轻松应对需求的变化,才有可能健康成长。没有良好架构的应用程序,就像没有搭好底......
  • Compose能拯救安卓开发吗?Jetpack Compose入门到精通(附资料)含实战、附Demo
    JetpackCompose简述JetpackCompose是用于构建原生AndroidUI的现代工具包。JetpackCompose使用更少的代码,强大的工具和直观的KotlinAPI,简化并加速了Android上的UI开发。这是AndroidDevelopers官网对它的描述。由于Compose基于Kotlin构建,因此可以与Java编程语言完全互操作,并......
  • Jetpack从入门到精通全家桶(含项目实战 附Demo)
    前言开发应用程序就像搭积木。我们对产品业务及功能模块的划分和封装,就像在搭建积木一样。积木不能太大,这不利于修改和拆解;积木也不能太小,否则管理起来可能会很混乱。只有基于稳健、合理的架构,项目才能轻松应对需求的变化,才有可能健康成长。没有良好架构的应用程序,就像没有搭好底......
  • Jetpack从入门到几乎入门(一)
    前言Jetpack系列:Jetpack从入门到几乎入门(一)Jetpack从入门到几乎入门(二)Jetpack从入门到几乎入门(三) 本文是我在学习guolin大神的《第一行代码》第三版Jetpack部分的知识总结,文中代码参考自《第一行代码》第三版在阅读本文前,您需要掌握kotlin语言的基本语法且对Activity的生命周期有......
  • Android进阶宝典 -- JetPack Navigation的高级用法(解决路由跳转新建Fragment页面问题)
    相信有相当一部分的伙伴,在项目开发中依然使用Activity作为页面承载体,有10个页面就会有10个Activity,这种方式当然没问题,但是如果涉及到页面间数据共享,那么使用多Activity就不是很方便了,需要Activity传递各种数据,涉及到数据的序列化与反序列化;因此产生了单Activity和多Fragment架构,所......
  • 实战!如何在 Jetpack Compose 中拥有一个与众不同的 Modifier
    步入正题!相信大家既然已经学习了Compose,那想必也非常熟悉如何使用Modifer了,由于Compose被Android团推设计的非常容易上手,所以有不了解如何使用的朋友可以去看看文档,即可轻松掌握基础的使用!拥有一个与众不同的Modifier,其实就是实现一个特别功能的Modifier,然后使用它去修饰我们......
  • 谷歌内部流出Jetpack Compose最全上手指南,含项目实战演练!
    简介JetpackCompose是在2019Googlei/O大会上发布的新的库。Compose库是用响应式编程的方式对View进行构建,可以用更少更直观的代码,更强大的功能,能提高开发速度。Compose并不是像RecyclerView、ConstraintLayout这种做了一个或者几个高级的UI控件,而是直接抛弃了我们写了N年......
  • 从入门到精通,Android Jetpack 架构实战教程合集
    Jetpack是Google推出的一些库的集合,包含组件、工具、架构方案等,其优势众多:可以减少空指针异常崩溃、内存泄漏,为开发出健壮且流畅的程序提供强力保障;可以消除大量重复样板式的代码,加速Android的开发进程;可以统一开发模式,抛弃传统的MVC,MVP…对于谷歌而言,AndroidJetpack是他......