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

查看 77|回复 6
作者: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"

base64, token, 字符, 如下

yolee599   
base64 编码的是二进制数据,不一定是字符串
sujin190   
二进制编码,前两个字节应该是结果 code ,3 和 4 字节显然是后面错误消息的长度值,你非要把它弄成字符串当然会出现乱码了
chensuixiang
OP
  
@sujin190 是的, 我查过是结果 code ,STX 这种表示开始结束这些。no token 可以正确转为 bm8gdG9rZW4=,那关于这些结果 code ,怎么变为这个 AgAI 的,老哥清楚不。实在不行如果这个 STX 是固定的,我也可以用这个 AgAI 来组合也能行得通
chensuixiang
OP
  
目前是确认过结果 code 的,因为复制到 vscode 中就是显示为 STXEOT ,因此也查过了这个表示啥意思。不过发消息过去必须发`AgAIbm8gdG9rZW4=`服务端才能正确接手,所以我有些迷惑如何根据字符串`no token`以及开始结果 code`STXEOT`组合成这个 base64 。而且不止`STXEOT`,还有其他结束 code 。我正在积极查找资料中。如果有经验的老哥,还望指点一下。
yolee599   
"\x02\x00\x08no token"
chensuixiang
OP
  
正在尝试通过 `stx := byte(2)`这种方式。。慢慢查~~
您需要登录后才可以回帖 登录 | 立即注册

返回顶部