Javascript: приведение объекта к байтовому массиву и преобразование в строку - PullRequest
1 голос
/ 13 марта 2012

Я пытаюсь преобразовать массив байтов в строку в JavaScript. Но сначала я должен привести объект к байтовому массиву.

Вот пример:

function Main(obj)
{
    //Obj is an object (in fact, it's a bytes array
    var str = FromBytesToString(obj);
    //str must be a string, computed from the obj

    return str;
}

Кто-нибудь знает, как это сделать?

Заранее спасибо,

Гийом

РЕДАКТИРОВАТЬ: некоторые точности:

1) Я вызываю JavaScript в приложении Windows (C #) с этим фрагментом кода:

    private string ExecuteScript(byte[] buffer)
    {
        //Load script (using StreamReader)
        string script = LoadScript(@"C:\script.js");
        //Parse script
        ScriptEngine engine = new ScriptEngine("Jscript");
        ParsedScript parsedScript = engine.Parse(script);
        //Run script, calling "Main" method
        return parsedScript.CallMethod("Main", buffer);
    }

Этот код использует код ScriptEngine, найденный здесь . Использует Windows Script Engine

2) Javascript код

Вот код JavaScript:

function Main(bytearray)
{
    //Transform the bytearray in string
    str = StringFromBytes();
    //Do some stuff (replace/etc)

    //sent back the new string
    return str;    
}

Таким образом, проблема в том, что аргумент "bytearray" является байтовым массивом C #, а javascript знает его только как объект. Если я использую метод ниже:

function StringFromByte(array)
{

    var b = array;
    var s = "";
    for (var i = 0; i < b.length; i++)
        s += String.fromCharCode(b[i]);

    return s;
}

Ошибка отображается в строке "s + = String.fromCharCode (b [i]); -> Ожидается число ...

Ответы [ 2 ]

0 голосов
/ 08 декабря 2013

Как насчет правильного вызова StringFromByte в функции Main, передавая ей байтовый массив?

function Main(bytearray)
{
//Transform the bytearray in string
str = StringFromBytes(bytearray);   //<<<< this was missing
//Do some stuff (replace/etc)

//sent back the new string
return str;    
}
0 голосов
/ 13 марта 2012

Вы можете;

var b = [0x61, 0x62, 0x63];
var s = "";
for (var i = 0; i < b.length; i++)
    s += String.fromCharCode(b[i]);

s === "abc"
...