Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.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#中的二进制字符串?_C#_Php_Silverlight_Post - Fatal编程技术网

如何读取C#中的二进制字符串?

如何读取C#中的二进制字符串?,c#,php,silverlight,post,C#,Php,Silverlight,Post,有一个php脚本将二进制字符串发送到客户端应用程序: $binary_string = pack('i',count($result_matrix)); foreach ($result_matrix as $row) { foreach ($row as $cell) { $binary_string .= pack('d',$cell); } } echo $binary_string; Silverlight应用程序通过POST协议接收$bi

有一个php脚本将二进制字符串发送到客户端应用程序:

$binary_string = pack('i',count($result_matrix));   
foreach ($result_matrix as $row)
{
    foreach ($row as $cell)
    {
        $binary_string .= pack('d',$cell);
    }
}
echo $binary_string;
Silverlight应用程序通过POST协议接收$binary_字符串。如何解析这个二进制字符串


或者有更好的方法将矩阵从PHP发送到Silverlight?

最基本的方法是发送XML数据?原因是,在Silverlight方面,您不仅需要解包二进制数据(用php函数打包),还需要了解如何用php脚本将数据结构打包为二进制数据

如果要使用十六进制格式进行打包,请使用以下方法来解包数据:

static byte[] UnpackHex(string hexvalue)
{
        if (hexvalue.Length % 2 != 0)
                hexvalue = "0" + hexvalue;
        int len = hexvalue.Length / 2;
        byte[] bytes = new byte[len];
        for(int i = 0; i < len; i++)
        {
                string byteString = hexvalue.Substring(2 * i, 2);
                bytes[i] = Convert.ToByte(byteString, 16);
        }
        return bytes;
}
静态字节[]解压十六进制(字符串十六进制值)
{
如果(hexvalue.Length%2!=0)
hexvalue=“0”+hexvalue;
int len=hexvalue.Length/2;
字节[]字节=新字节[len];
对于(int i=0;i
也许最基本的方法是发送XML数据?原因是,在Silverlight方面,您不仅需要解包二进制数据(用php函数打包),还需要了解如何用php脚本将数据结构打包为二进制数据

如果要使用十六进制格式进行打包,请使用以下方法来解包数据:

static byte[] UnpackHex(string hexvalue)
{
        if (hexvalue.Length % 2 != 0)
                hexvalue = "0" + hexvalue;
        int len = hexvalue.Length / 2;
        byte[] bytes = new byte[len];
        for(int i = 0; i < len; i++)
        {
                string byteString = hexvalue.Substring(2 * i, 2);
                bytes[i] = Convert.ToByte(byteString, 16);
        }
        return bytes;
}
静态字节[]解压十六进制(字符串十六进制值)
{
如果(hexvalue.Length%2!=0)
hexvalue=“0”+hexvalue;
int len=hexvalue.Length/2;
字节[]字节=新字节[len];
对于(int i=0;i
如果以
System.IO.Stream
类型获取数据,则可以直接使用方法
read
如果以
System.IO.Stream
类型获取数据,则可以直接使用System.IO命名空间中的方法
read

,还可以使用BinaryReader类。请参阅此位置的文档


我认为这应该有帮助。如果您需要更多帮助,也许还应该从silverlight方面提供一些代码。

在System.IO名称空间中,您还可以使用BinaryReader类。请参阅此位置的文档


我认为这应该有帮助。如果您需要更多帮助,也许您还应该从silverlight方面提供一些代码。

什么是“二进制字符串”?二进制数字系统或base-2数字系统使用两个符号0和1表示数值。实际上,二进制数据可以用任何基本数字系统来表示,如base-16或base-8,因为存在从bsae-2到base-8或base-16的转换。这两种格式
i
d
都具有与机器相关的格式和字节顺序/表示。例如,编译为64位的php版本将发送不同于32位php版本上运行的同一脚本的数据。“二进制字符串”对您来说是什么?二进制数字系统,或base-2数字系统,使用两个符号0和1表示数值。实际上,二进制数据可以用任何基本数字系统来表示,如base-16或base-8,因为存在从bsae-2到base-8或base-16的转换。这两种格式
i
d
都具有与机器相关的格式和字节顺序/表示。例如,编译为64位的php版本将发送不同于32位php版本上运行的同一脚本的数据。