J'ai écrit une fonction pour convertir byte[]
en string
, et j'ajoute ";" après chaque octet. Maintenant, je veux convertir ce string
en byte[]
en séparant la chaîne (similaire à une chaîne CSV). Comment est-ce que je pourrais écrire une fonction pour convertir cette chaîne à ce tableau d'octets encore???Conversion de chaîne en tableau d'octets en C# (CSV)
Répondre
Tenir compte à l'aide Split String
merci MAIS cela ne pouvait pas m'aider! je veux diviser ma chaîne par ";" alors mettez-le dans le tableau puis convertissez-le en byte [] – sss
str.Split(new char[]{';'},
StringSplitOptions.RemoveEmptyEntries).Select(s => byte.Parse(s)).ToArray();
merci MAIS cela n'a pas pu m'aider! je veux diviser ma chaîne par ";" puis le mettre dans le tableau puis le convertir en byte [] – sss
Essayez ceci: 'Encoding.UTF8.GetBytes (str.Replace ("; ", string.Empty);' –
ne fonctionne pas byteArray [i] .ToString() + ";" ne concatène pas les valeurs de byte en tant que char mais utilise 1-3 octets de caractères –
cordes Builder sera utile au lieu de chaîne (Performance sage) -
avec cordes Builder vous pouvez,
- byte [] buffer = système. Text.Encoding.UTF8.GetBytes (objStringBuilder.ToString());
avec cordes
- byte [] buffer = System.Text.Encoding.UTF8.GetBytes (objString);
essayer cette
var byteArray = new byte[] {123, 11, 111};
var stringBytes = string.Join(";", byteArray.Select(b => b.ToString()));
var newByteArray = stringBytes.Split(';').Select(s => byte.Parse(s)).ToArray();
System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
return encoding.GetBytes(yourStringVariable);
les valeurs sont "imprimées" quelque 32 est "32" pas "" comme attendu par votre code –
Je suppose que vous voulez vous débarrasser de l';
lors de la conversion aussi. Je pense que vous voulez faire quelque chose comme ceci:
byte[] result = Encoding.UTF8.GetBytes(s.Replace(";",""));
Cela échouera si le tableau d'octets d'origine contient en fait une ;
qui est des données valides, mais dans ce cas, vous aurez beaucoup de problèmes de toute façon depuis votre « CSV » le fichier sera mal formaté.
Je sais que vous connaissez déjà la réponse maintenant ... mais ce code résout le problème, j'espère que cela aide quelqu'un d'autre.
int counter= 0;
string cadena = "8,5,6,3,4,6,3"
string[] foto = cadena.Split(',');
byte[] fotoFinal = new byte[foto.Length];
foreach (string s in foto)
{
fotoFinal[contador] = Convert.ToByte(s);
counter++;
}
simplement :)
public static byte[] Bytes (this string Key)
{
return Enumerable.Range(0, Key.Binary().Length/8)
.Select(Index => Convert.ToByte(
Key.Binary().Substring(Index * 8, 8), 2))
.ToArray();
}
est la chaîne comme 'T; *; |; m, ou' '84; 42; 124; 109;'? –
"merci MAIS ça n'a pas pu m'aider! Je veux diviser ma chaîne par"; "puis le mettre dans le tableau puis le convertir en byte []" essayer d'écrire un pseudo code pour cela afin que nous puissions voir ce que vous voulez . Mon sous-entendu de ce qoute est que vous voulez lancer une chaîne [] à un octet [] tout en interprétant les valeurs de chaîne comme un octet chacun. Ce qui n'est pas possible. Vous devez convertir chaque valeur –