J'ai le problème suivant: si le String
contient une char
qui ne connaît pas de ASCII
, il utilise un 63.C# UTF8 codant pour bytearray hors de portée
En raison de ce que j'ai changé l'encodage à UTF8
, mais Je sais qu'un char
peut avoir le length
de deux bytes
, donc je reçois une erreur hors plage.
Comment puis-je résoudre le problème?
System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding();
byte[] baInput = enc.GetBytes(strInput);
// Split byte array (6 Byte) in date (days) and time (ms) parts
byte[] baMsec = new byte[4];
byte[] baDays = new byte[2];
for (int i = 0; i < baInput.Length; i++)
{
if (4 > i)
{
baMsec[i] = baInput[i];
}
else
{
baDays[i - 4] = baInput[i];
}
}
Quel est le contenu de 'strInput'? – Toxantron
Le contenu est par exemple: l|h * – xproseal
Il semble que vous travaillez avec des octets, pas de texte. N'utilisez pas une chaîne pour la stocker en premier lieu, mais un tableau d'octets. Comment obtenez-vous le 'strInput' en premier lieu? – CodeCaster