Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.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 在ArrayBuffer中存储json对象_Javascript_Arraybuffer - Fatal编程技术网

Javascript 在ArrayBuffer中存储json对象

Javascript 在ArrayBuffer中存储json对象,javascript,arraybuffer,Javascript,Arraybuffer,要在ArrayBuffer function stringToUint(string) { var string = btoa(unescape(encodeURIComponent(string))), charList = string.split(''), uintArray = []; for (var i = 0; i < charList.length; i++) { uintArray.push(charList

要在
ArrayBuffer

function stringToUint(string) {
    var string = btoa(unescape(encodeURIComponent(string))),
        charList = string.split(''),
        uintArray = [];
    for (var i = 0; i < charList.length; i++) {
        uintArray.push(charList[i].charCodeAt(0));
    }
    return new Uint8Array(uintArray);
}

function uintToString(uintArray) {
    var encodedString = String.fromCharCode.apply(null, uintArray),
        decodedString = decodeURIComponent(escape(atob(encodedString)));
    return decodedString;
}
var str = {'x':'aaaa'},
    enc = stringToUint(str),
    dec = uintToString(enc);

console.log(dec.x);
函数stringToUint(字符串){
var string=btoa(unescape(encodeURIComponent(string)),
charList=string.split(“”),
uintArray=[];
对于(var i=0;i
console.log(十二月十日)正在打印“未定义”。我做错了吗?

这里是jsfiddle

为了让它能够正常工作,在
stringToUint
函数调用
JSON.stringify

function stringToUint(string) {
    var string = btoa(unescape(JSON.stringify(string))),
        charList = string.split(''),
        uintArray = [];
    for (var i = 0; i < charList.length; i++) {
        uintArray.push(charList[i].charCodeAt(0));
    }
    return new Uint8Array(uintArray);
}

function uintToString(uintArray) {
    var encodedString = String.fromCharCode.apply(null, uintArray),
        decodedString = decodeURIComponent(escape(atob(encodedString)));
    return decodedString;
}
var str = {'x':'aaaa'},
    enc = stringToUint(str),
    dec = uintToString(enc);

console.log(dec);
函数stringToUint(字符串){
var string=btoa(unescape(JSON.stringify(string)),
charList=string.split(“”),
uintArray=[];
对于(var i=0;i
因为
stringToUint
需要一个字符串,向它传递一个对象将
{'x':'aaaa'}
转换为
[object object object]
并返回表示该对象的数组,因此在调用
uintotString
时,数组将转换回
[object object object]


简单的解决方案是在将对象传递给函数之前使用
JSON.stringify
,然后使用
JSON.parse
转换为原始对象

函数stringToUint(字符串){
var string=btoa(unescape(encodeURIComponent(string)),
charList=string.split(“”),
uintArray=[];
对于(var i=0;i书面文件(12月x日)此代码用于
stringToUint
的速度约为40%

函数stringToUint(字符串){
const str=btoa(unescape(encodeURIComponent(字符串)))
const uintArray=[]
常量len=str.length
设i=-1
而(++i
如何使用
JSON.parse从
Utils.stringToUint(JSON.stringify(str))
获取JSON
function stringToUint(string) {
  const str = btoa(unescape(encodeURIComponent(string)))
  const uintArray = []
  const len = str.length

  let i = -1

  while (++i < len) {
    uintArray[i] = str.charCodeAt(i)
  }

  return new Uint8Array(uintArray);
}