如何在 C++ 非托管代码 Json 中反序列化一个字节 [] 的 json 字符串?
Posted
技术标签:
【中文标题】如何在 C++ 非托管代码 Json 中反序列化一个字节 [] 的 json 字符串?【英文标题】:How deserialize a json string of a byte[] in c++ unmanaged code a Json? 【发布时间】:2020-05-24 11:18:15 【问题描述】:在非托管 C++ 程序中,必须反序列化 tcp 从服务器读取的 json。
服务器端(用 C# 制作):
public class DUMMY
public byte[] BinaryContent get; set;
... inside a http get controller ...
DUMMY d = new DUMMY();
d.BinaryContent = new byte[] 0x00, 0x00 ; // 0x00 is a sample, in real it contains a binary file
string sd = JsonConvert.SerializeObject(d);
return sd;
客户端(用 C++ 制作,非托管)http-get read :
"BinaryContent" : "AAA="
问题是如何反序列化?
如何将 "AAA=" 转换为 0x0000 ?
第二个例子:IF SERVER send 0xFF, 0xFF string received is "ERE=".
【问题讨论】:
我非常怀疑 0xFF, 0xFF 会变成 ERE=。请检查您的第二个示例。 你的权限是 rustyx,0xFF 0xFF 变成 "//8=",值 0x11 0x11 变成 "ERE="。谢谢 【参考方案1】:这是 Base64 编码。 https://en.wikipedia.org/wiki/Base64
这是一种仅使用 ASCII 字符集即可表示任意字节的方式。
您可能希望找到一个可以解码 Base64 字符串并返回它所代表的字节的库。 (或者也可以自己写那个算法,但我不推荐。)
【讨论】:
谢谢,我找到cpp-base64 in github,我会试试的。以上是关于如何在 C++ 非托管代码 Json 中反序列化一个字节 [] 的 json 字符串?的主要内容,如果未能解决你的问题,请参考以下文章