JavaScript友好的二进制安全数据格式设计(不是JSON或XML)
首先也是最重要的:在这种情况下,JSON和XML不是一个选项,请不要建议它们。如果这让人们更容易接受这个事实,想象一下我打算重新发明自我教育的轮子 回到正题: 我需要设计一种二进制安全数据格式,对发送到我编写的特定哑服务器的一些数据报进行编码(如果有必要的话,用C) 为了简化问题,假设我只发送数字、字符串和数组 重要事实:服务器不(也不应该)知道任何有关Unicode和其他东西的信息。它将所有字符串视为二进制blob(并且从不查看它们内部) 我最初设计的格式如下: 1 ; number of items in datagram A ; -- array -- 3 ; number of items in array N ; -- number -- 1 ; number value S ; -- string -- 3 ; string size in bytes foo ; string bytes A ; -- array -- 0 ; number of items in arrayJavaScript友好的二进制安全数据格式设计(不是JSON或XML),javascript,c,serialization,data-formats,Javascript,C,Serialization,Data Formats,首先也是最重要的:在这种情况下,JSON和XML不是一个选项,请不要建议它们。如果这让人们更容易接受这个事实,想象一下我打算重新发明自我教育的轮子 回到正题: 我需要设计一种二进制安全数据格式,对发送到我编写的特定哑服务器的一些数据报进行编码(如果有必要的话,用C) 为了简化问题,假设我只发送数字、字符串和数组 重要事实:服务器不(也不应该)知道任何有关Unicode和其他东西的信息。它将所有字符串视为二进制blob(并且从不查看它们内部) 我最初设计的格式如下: 1 ; number of
- 数据报:
\n..
- 价值:
- 编号:
N\N\N
- 字符串:
S\n\n\n
- 数组:
A\n\n...
- 编号:
[ 1, "foo", [] ]
序列化如下:
1 ; number of items in datagram
A ; -- array --
3 ; number of items in array
N ; -- number --
1 ; number value
S ; -- string --
3 ; string size in bytes
foo ; string bytes
A ; -- array --
0 ; number of items in array
1.数据报中的项目数
A;——排列--
3.数组中的项目数
N;——数--
1.数值
S;——串--
3.字符串大小(字节)
傅;字符串字节
A;——排列--
0 ; 数组中的项目数
问题是我在JavaScript中可靠地获得了以字节为单位的字符串大小
所以,问题是:如何更改格式,这样字符串既可以保存在JS中,也可以整齐地加载到C中
我不想向服务器添加Unicode支持
我不太想在服务器上解码字符串(比如,从base64或简单地到unescape\xNN序列)-这需要使用动态字符串缓冲区,考虑到服务器有多笨,这是不可取的
有什么线索吗?看来用普通C读UTF-8毕竟是错误的。所以我扩展了协议,以本地方式处理UTF-8字符串。(但我希望你能回答这个问题。)@Diodeus:谢谢,我觉得我需要它:-)你看过JSON了吗?(开玩笑)其实有点吓人。但似乎我成功了。:-)