Bonjour,
je voudrais ameliorer un programme que j'ai concu, qui fonctionne mais qui est un peu lourd :
Je dois envoyer a un serveur des donnees pour une simulation, mes donnees sont stockées dans un byte[140] et le serveur veut recuperer une String
Je commence donc par recuperer tout les bytes dans une chaine :
privatestring[] getByteStringFromByteArray(byte[] value)
{
// Conversion of the byte array to a string String infos = BitConverter.ToString(value);
// put the "infos" string into the "toNadasData" array toNadasData.Add(infos);
// a char array to use the "-" caracter as a separatorchar[] tiret = newchar[1];
tiret[0] = '-';
return infos.Split(tiret);
}
( la ligne "toNadasData.Add(infos);" sert uniquement a garder en memoire les chaines contenant les bytes )
Ensuite mon souci vient du fait que mon serveur prend en fait chaque caractère de la chaine pour recuperer les informations utiles a la simulation, mais que lui ne doit pas etre ecrit en C#, puisque pour le faire fonctionner il faut que je transforme 2 bytes en un caractère Unicode (par exemple si j'ai ma chaine de byte qui fait "0A 15 2C 6D ..." je dois transmettre "\u150A \u6D2C ..."
Je gere actuellement cela avec ces deux fonctions :
_ Celle ci dans ma classe principale :
privatestring prepareStringForSending(string[] value)
{
String sentString = "";
for (int i = 0; i < value.Length; i += 2)
// changing 2 bytes written into string in a UTF-16 character for sending it to the server sentString += dataFromFile.getUnicodeFromString(value[i + 1], value[i]);
// "End of string" character sentString += "\u0009";
return sentString;
}
_ Qui appelle celle ci :
publicstring getUnicodeFromString(stringvalue1, stringvalue2)
{
string var = "";
switch (value1)
{
case "00": switch (value2)
{
case "00": var = "u0000"; break;
case "01": var = "\u0001"; break;
case "02": var = "\u0002"; break;
case "03": var = "\u0003"; break;
case "04": var = "\u0004"; break;
case "05": var = "\u0005"; break;
case "06": var = "\u0006"; break;
...
case "FA": var = "\uFFFA"; break;
case "FB": var = "\uFFFB"; break;
case "FC": var = "\uFFFC"; break;
case "FD": var = "\uFFFD"; break;
case "FE": var = "\uFFFE"; break;
case "FF": var = "\uFFFF"; break;
};
break;
default: var = "\u0000"; break;
}
return var;
}
Comme vous vous en doutez, un switch sur 2 bytes ca pese lourd, donc si quelqu'un avait une idée pour faire ca d'une autre manière, cela m'interesserait.
Merci d'avance 