J'essaye de lire une chaîne terminée par zéro à partir d'un tableau d'octets; le paramètre à la fonction est le codage.Les terminaisons NULL font-elles partie du codage de texte?
string ReadString(Encoding encoding)
Par exemple, « toto » dans les codages suivants sont:
UTF-32: 66 00 00 00 6f 00 00 00 6f 00 00 00
UTF-8: 66 6f 6f
UTF-7: 66 6f 6f 2b 41 41 41 2d
Si je copiais tous les octets dans un tableau (la lecture jusqu'à la terminaison nulle) et passé ce tableau dans encoding.GetString()
, cela ne fonctionnerait pas car si la chaîne était codée en UTF-32, mon algorithme atteindrait le "terminateur nul" après le deuxième octet. J'ai donc une double question: les terminaisons NULL font-elles partie du codage? Si non, comment pourrais-je décoder le caractère chaîne par caractère et vérifier l'octet suivant pour le terminateur null?
Merci à l'avance
(suggestions sont également appréciés)
Edit:
Si "foo" était nulle fin et utf-32 encodée, qui serait-il ?:
1. 66 00 00 00 6f 00 00 00 6f 00 00 00 00
2. 66 00 00 00 6f 00 00 00 6f 00 00 00 00 00 00 00
pour votre édition, ce serait "2. 66 00 00 00 6f 00 00 00 6f 00 00 00 00 00 00 00", car utf 32 considère chaque char (même \ 0) comme un tableau de 4 octets – bigworld12
Voici un test rapide utilisant C# interactif: http://i.imgur.com/yvYiTD8.png – bigworld12