GRPC的HTTP返回值int64被转为string类型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GRPC的HTTP返回值int64被转为string类型相关的知识,希望对你有一定的参考价值。

参考技术A 最近在使用http接口访问一个GRPC的服务时遇到一个数据类型转换的问题。一个时间戳字段在PB中定义的字段类型为uint64,返回到本地之后却是一个string类型,在我用uint64去接收这个字段时报了错。

为什么GRPC要把int64转为string类型呢,他们的回答是遵循proto3的序列化规则,proto3的json-mapping中规定了int64/uint64/fixed64类型映射的json类型为string。如图:(PB文档地址: https://developers.google.com/protocol-buffers/docs/proto3#json )

很多人都质疑PB的这个行为,然而这并不能改变什么,下面是一个关于该问题的回答,大意就是:JS使用了52bit去实现IEEE754的双精度数,也就是说js在不丢失信息的情况下最大能表示的数是 2^52 。64位的数在JS中直接使用是会有问题了。PB为了客户端能正常处理数据而把64位数值直接转换为了string类型。

本人使用的是golang语言,在处理http返回值时,使用jsonpb包代替了json包去解析返回的二进制数据。不过解析出来的是message格式的,用的时候还需要进一步加工处理,相比较与转换string类型到int64,感觉还是简单一点。

python处理图像矩阵--值转为int


1. 在用python处理图像数字矩阵时,若对矩阵进行了加减乘除等运算,可能会造成矩阵元素值溢出,然后某些元素值可能都被赋为255;
之后若重新显示图像,可能会没有什么变化,此时,可以将运算后的矩阵值转换为int,再返回。

2. 还要注意,读取图像然后转为 numpy 数组,此时的数组是 int 矩阵但是将 numpy 数组经过运算得到的很可能是 float 矩阵,但最后若还要用 numpy 类型的数组进行显示(如plt),则在显示前,需要转为 int 矩阵,否则很可能看不出图像变化。

以上是关于GRPC的HTTP返回值int64被转为string类型的主要内容,如果未能解决你的问题,请参考以下文章

python处理图像矩阵--值转为int

grpc

关于把int的数值转为字符串

python 使用gRPC

2021-07-22学习笔记总结(grpc和client接口调用)

java怎样将string转为对象