【发布时间】:2021-07-22 08:55:36
【问题描述】:
我正在尝试解码在线游戏中生成的这个 Base64 字符串,但我无法理解它。这是来自一个在线游戏,您可以在游戏中为您的角色提供不同的服装/风格。你可以选择你的颜色、坐骑和穿什么类型的衣服。然后,您可以选择保存整个装备(外观、颜色等),它会变成 Base64 字符串,并将其保存为本地计算机上的 JSON 文件。但我感兴趣的是阅读这个 Base64 字符串。
pGVtb3VudKJlY29sb3KkZmRldGFpbABkaGVhZABkbGVncwBldG9yc28AYmlkAGRuYW1lYGZvdXRmaXSkZWNvbG9ypGZkZXRhaWwYfGRoZWFkAGRsZWdzGHJldG9yc28YX2pmaXJzdEFkZE9u9GJpZBiBa3NlY29uZEFkZE9u9GZzdW1tb26hYmlkAA P>
我正在玩的游戏将其保存为 JSON 文件。上面的代码被转换成这个,存储在本地保存文件中。
{
"mount": {
"color": {
"detail": 0,
"head": 0,
"legs": 0,
"torso": 0
},
"id": 0
},
"name": "Example",
"outfit": {"color": {
"detail": 124,
"head": 0,
"legs": 114,
"torso": 95
},
"firstAddOn": false,
"id": 129,
"secondAddOn": false
},
"summon": {
"id": 0
}
}
但我正在尝试解码实际的 Base64 字符串并从那里获取它的值。我得到的只是这个:
emountecolorfdetail.dhead.dlegs.etorso.bid.dname`foutfitecolorfdetail|dhead.dlegsretorso_jfirstAddOnbidksecondAddOnfsummonbid.
至少我可以看到一些值。
mount: e
color: f
detail: �d
head: �d
legs: �e
torso: �b
等等……
但是查看保存的文件,值应该是数字。这就是我想要得到的。变量的值。
【问题讨论】:
-
我不能完全回答这个问题,但至少有一些提示:将 base64 代码解码为十六进制(例如 node.js 中的
console.log(Buffer.from(b64, "base64").toString("hex")))然后你可以看到真正的字节值而不是一些奇怪的人物。例如,有一个序列“64 65 74 61 69 6c 18 7c 64”,即“d e t a i l | d”,基本上是ASCII码,但7c,打印为'|'是值 124。 -
似乎他们使用某种二进制 JSON 编码而不是原始 JSON 格式。有多种选择,BSON 就是一个例子。