请教 websocket 二进制消息编码问题

2023-08-26 11:06:25 +08:00
 chensuixiang

有个协同文档,进入文档后 ws 链接,然后发送与接受文件。浏览器控制台 hex 查看器查看某个消息结果如下

00000000: 0200 086e 6f20 746f 6b65 6e              ...no token

改用 base64 查看如下

AgAIbm8gdG9rZW4=

将这个 base64 数据拿到在线 base64 编码解码网站,得到的结果也是...no token

但是复制到 vscode 中,却是一个 unicode 字符,显示如下(可能显示不正确,建议老哥们随便找个 base64 解码网址看看比如 https://base64.us/ ,显示的是几个类似麻将白板的形状):

  no token

询问 gpt ,什么样的字符串 base64 之后是 AgAIbm8gdG9rZW4=,但是未能解决我的问题。

问题如下:

如何手动定义一个字符串变量,base64 编码之后是AgAIbm8gdG9rZW4=

我尝试过的如下,结果均不对。还请有经验的老哥们指点一下方向

mes := "\u0002\u0008no token"
mes2 := "  no token"
mes2 := "...no token"

2522 次点击
所在节点    程序员
25 条回复
hsfzxjy
2023-08-26 20:47:15 +08:00
建议你去看 base64 的定义,简单说是原文三个字节会对应 base64 四个字节,你直接看他的实现就懂了
hsfzxjy
2023-08-26 20:48:37 +08:00
你这也不只变了个 3 啊,第一行不是全变了吗。该不会觉得所有的点...都是一样的吧
g1f9
2023-08-26 20:52:04 +08:00
哪款在线文档
xiwh
2023-08-26 21:48:35 +08:00
用二进制包的角度分析,看起来不难,前两字节应该是包类型(0x0002 为文本或者 error?), 第三个和第四个字节一看就是包长度 0x0008 ,正好对应后续字符所占字节数量
chensuixiang
2023-08-26 23:26:14 +08:00
@hsfzxjy 我有试了很多次,同一个数字的,没描述清。比如都是发 4
```
00000001: 0200 0134 00 ...4.

除了 0134 00 是固定的(应该就是表示 STX 4 END ),前面的 0200 总是会变化,所以我就好奇前面这个 0200 是根据什么来的,为何会一直变化。有时候又变成下面找这个。
00000001: 0300 0134 00
```
所有的点点点肯定不是同一个的,这个我明白的。

感谢楼上几位老哥的回复。目前已经实现能更改标题,我的目标其实算完成了。剩下的就是好奇心在作祟。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/968420

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX