Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.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
C# Javascript:将对象强制转换为字节数组并转换为字符串_C#_Javascript_Byte - Fatal编程技术网

C# Javascript:将对象强制转换为字节数组并转换为字符串

C# Javascript:将对象强制转换为字节数组并转换为字符串,c#,javascript,byte,C#,Javascript,Byte,我试图在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; } 有人知道怎么做吗 提前感

我试图在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) 我使用以下代码调用windows应用程序(C#)中的javascript:

    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);
    }
此代码使用脚本引擎代码,已找到。它使用Windows脚本引擎

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;
}
函数StringFromByte(数组)
{
var b=数组;
var s=“”;
对于(变量i=0;i
第“s+=String.fromCharCode(b[i]);->行中显示的错误应为一个数字…

您可以

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

s === "abc"
var b=[0x61、0x62、0x63];
var s=“”;
对于(变量i=0;i
如何在主函数中正确调用StringFromByte并将bytearray传递给它

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;    
}
主功能(bytearray)
{
//转换字符串中的字节数组

str=StringFromBytes(bytearray);//你从哪里得到这个字节数组?事实上,我的脚本是在一个C#应用程序中调用的(使用Windows脚本引擎)。然后初始化中的字节数组并填入C#Code它适用于你的示例,但不适用于我的对象。它说在“s+=String.fromCharCode(b[i]”行中需要一个数字).我认为问题在于这个对象是一个字节[]在C#中,作为参数传递,来自Windows Script Engine我假设您已经有了一个字节数组,对象是什么样子的?我假设它是一个对象,我不知道任何javascript方法来获取对象的类型:sGuillaume,当使用chrome/safari时,您可以使用控制台来检查对象由什么组成。AFAIK对于FireBug也是如此。console.dir(对象)将在f12调试控制台中打印其结构