2010-05-15 7 views
0

Il y a un script php qui envoie une chaîne binaire à l'application cliente:Comment puis-je lire une chaîne binaire en C#?

$binary_string = pack('i',count($result_matrix)); 
foreach ($result_matrix as $row) 
{ 
    foreach ($row as $cell) 
    { 
     $binary_string .= pack('d',$cell); 
    } 
} 
echo $binary_string; 

application Silverlight reçoit $ binary_string via le protocole POST. Comment puis-je analyser cette chaîne binaire?

Ou peut-être il y a une meilleure façon d'envoyer la matrice de PHP à Silverlight?

+0

Qu'est-ce que « chaîne binaire » pour vous? –

+0

Le système de numération binaire, ou d'un système de nombres de base 2, représente des valeurs numériques en utilisant deux symboles, 0 et 1. En fait, des données binaires pouvant être représentés par un système de base numérique comme base 16 ou de la base-8 becase il y a conversion de BSAE -2 à base-8 ou base-16. – Vokinneberg

+0

Les deux formats 'i' et' d' ont un format dépendant de la machine et un ordre/une représentation des octets. Ainsi, par exemple une version php compilée en 64 bits enverra des données différentes du même script exécuté sur une version 32 bits de php. – VolkerK

Répondre

1

Si vous obtenez les données de type System.IO.Stream, vous pouvez directement utiliser la méthode read.

1

Peut-être la façon élémentaire est d'envoyer des données XML? La raison est que sur le côté Silverlight, vous avez non seulement besoin de décompresser les données binaires, qui contiennent la fonction php, mais aussi d'avoir une connaissance de la structure des données dans le script php représenté dans les données binaires.

Si vous utilisez le format HEX pour l'emballage que d'utiliser somethong comme celui-ci pour décompresser des données:

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; 
} 
1

Dans l'espace de noms System.IO vous pouvez également utiliser la classe BinaryReader. Voir la documentation à cet endroit BinaryReader

Je pense que cela devrait aider. Si vous avez besoin de plus d'aide, vous devriez peut-être aussi fournir du code de votre côté argenté.

Questions connexes