gpt4 book ai didi

JavaScript 友好的二进制安全数据格式设计(不是 JSON 或 XML)

转载 作者:太空狗 更新时间:2023-10-29 15:41:22 36 4
gpt4 key购买 nike

首先也是最重要的:在这种特定情况下,JSON 和 XML 不是一个选项,请不要建议它们。如果这样更容易接受这个事实,想象一下我打算重新发明轮子进行 self 教育。

回到正题:

我需要设计一个二进制安全的数据格式来编码我发送到我编写的特定哑服务器的一些数据报(如果重要的话,用 C 语言编写)。

为了简化问题,假设我只发送数字、字符串和数组。

重要事实:服务器不知道(也不应该)有关 Unicode 和其他东西的任何信息。它将所有字符串视为二进制 blob(并且从不查看它们内部)。

我最初设计的格式如下:

  • 数据报:<Number:size>\n<Value1>...<ValueN>
  • 值:
    • 编号:N\n<Value>\n
    • 字符串:S\n<Number:size-in-bytes>\n<bytes>\n
    • 数组:A\n<Number:size>\n<Value0>...<ValueN>

例子:

[ 1, "foo", [] ]

序列化如下:

1   ; number of items in datagramA   ; -- array --3   ; number of items in arrayN   ; -- number --1   ; number valueS   ; -- string --3   ; string size in bytesfoo ; string bytesA   ; -- array --0   ; number of items in array

问题是我can not在 JavaScript 中可靠地获取以字节为单位的字符串大小。

那么,问题来了:如何改变格式,让一个字符串既可以在JS中保存,又可以在C中整齐地加载。

我不想向服务器添加 Unicode 支持。

而且我不太想在服务器上解码字符串(比如,从 base64 或简单地转义\xNN 序列)——这将需要使用动态字符串缓冲区,考虑到服务器有多笨,这不是那么可取...

有什么线索吗?

最佳答案

似乎在纯 C 中读取 UTF-8 是 not that scary毕竟。所以我正在扩展协议(protocol)以本地处理 UTF-8 字符串。 (但会很感激这个问题的答案。)

关于JavaScript 友好的二进制安全数据格式设计(不是 JSON 或 XML),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5516988/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com