je le code suivant:Conversion de byte [] à chaîne
using (BinaryReader br = new BinaryReader(
File.Open(FILE_PATH, FileMode.Open, FileAccess.ReadWrite)))
{
int pos = 0;
int length = (int) br.BaseStream.Length;
while (pos < length)
{
b[pos] = br.ReadByte();
pos++;
}
pos = 0;
while (pos < length)
{
Console.WriteLine(Convert.ToString(b[pos]));
pos++;
}
}
Le FILE_PATH est une chaîne const qui contient le chemin d'accès au fichier binaire en cours de lecture. Le fichier binaire est un mélange d'entiers et de caractères. Les entiers ont chacun 1 octet et chaque caractère est écrit dans le fichier sous la forme de 2 octets.
Par exemple, le fichier a les données suivantes:
1HELLO SONT COMMENT YOU45YOU PROSPECTIFS // GRANDE SONT et ainsi de suite
S'il vous plaît noter: Chaque entier est associé à la chaîne de caractères suivants. Donc 1 est associé à "BONJOUR COMMENT ÊTES-VOUS" et 45 avec "VOUS REGARDEZ GRAND" et ainsi de suite.
Maintenant le binaire est écrit (je ne sais pas pourquoi mais je dois vivre avec ça) de telle sorte que '1' ne prendra qu'un octet alors que 'H' (et autres caractères) prend 2 octets chacun.
Voici donc ce que le fichier contient en fait:
0100480045..and ainsi de suite Heres la rupture:
01 est le premier octet pour l'entier 1 0048 sont les 2 octets pour « H »(H est 48 en hexadécimal) 0045 sont les 2 octets pour « E »(E = 0x45)
et ainsi de suite .. Je veux que ma console pour imprimer un format lisible sur ce fichier: ce que je veux pour imprimer "1 BONJOUR COMMENT ETES-VOUS" et puis "45 VOUS REGARDEZ GRAND" et ainsi de suite ..
Est-ce que ce que je fais est correct? Y a-t-il un moyen plus facile/efficace? Ma ligne Console.WriteLine (Convert.ToString (b [pos])); ne fait qu'imprimer la valeur entière et non le caractère réel que je veux. C'est OK pour les entiers dans le fichier mais comment puis-je lire les caractères?
Toute aide serait grandement appréciée. Merci
langue? – mkoryak
J'ai supprimé ma réponse - quelle était la personne pensant qui a décidé de ce format? : boggled: –
Comment le champ entier est-il différencié de la chaîne? Les caractères peuvent-ils être au-dessus du point de code U + 00FF? L'entier peut-il être "0"? L'entier est-il signé ou non signé? – outis