Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript友好的二进制安全数据格式设计(不是JSON或XML)_Javascript_C_Serialization_Data Formats - Fatal编程技术网

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

JavaScript友好的二进制安全数据格式设计(不是JSON或XML),javascript,c,serialization,data-formats,Javascript,C,Serialization,Data Formats,首先也是最重要的:在这种情况下,JSON和XML不是一个选项,请不要建议它们。如果这让人们更容易接受这个事实,想象一下我打算重新发明自我教育的轮子 回到正题: 我需要设计一种二进制安全数据格式,对发送到我编写的特定哑服务器的一些数据报进行编码(如果有必要的话,用C) 为了简化问题,假设我只发送数字、字符串和数组 重要事实:服务器不(也不应该)知道任何有关Unicode和其他东西的信息。它将所有字符串视为二进制blob(并且从不查看它们内部) 我最初设计的格式如下: 1 ; number of

首先也是最重要的:在这种情况下,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 array
  • 数据报:
    \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了吗?(开玩笑)其实有点吓人。但似乎我成功了。:-)