Transformer un Array de Byte en String proprement ? [C#] - C#/.NET managed - Programmation
Marsh Posté le 01-03-2005 à 10:21:50
PS: même si vous avez une solution pour le premier problème, je suis preneur d'une solution simple pour mon second, car c'est un problème que je me pose régulièrement (et dans l'autre sens aussi si possible )
Marsh Posté le 03-03-2005 à 18:30:17
un simple casting ne passerait il pas (j'ai pas testé)
=> (STRING)
sinon je ne veux pas trop ce que tu pourrais faire a part comme tu l'as dis parcourir le tableau et concaténé, après tout je ne pense pas qu'une méthode ferait plus...
Marsh Posté le 03-03-2005 à 18:45:34
Regarde dans System.Text. T'as une chouette classe Decoder qui permet de créer une String à partir d'un tableau d'octets
Marsh Posté le 03-03-2005 à 18:47:57
Donc ça fera :
System.Text.ASCIIEncoding.GetDecoder().GetChars(byteArray, startIndex, length, charArray, charIndex) |
Avec :
Ensuite t'as juste à construire ta string à partir du tableau de char
Marsh Posté le 03-03-2005 à 19:21:06
OK, merci FlorentG
C pas malin de pas avoir mis ça dans Convert, j'ai cherché là dedans, j'ai pas eu l'idée d'aller dans Text
Marsh Posté le 04-03-2005 à 20:55:50
J'ai un souci, ça merde
Bon, vu que de toute façon, il faut que je fasse des readline dedans, et que j'ai pas envie de bouffer plein de mémoire avec les 280 Ko du fichier à traîter, j'ai décidé de passer par un fichier temporaire.
Seulement, j'ai un problème pour lire le dernier bout, qui est plus petit que le buffer : ça plante pas vraiment, mais le programme se bloque et ne fait rien (même symptôme si je met en chaîne de caractères).
Ci-dessous la class que j'ai fait :
Code :
|
Ca bloque là :
Code :
|
(ou la ligne du dessous, je sais pas)
Marsh Posté le 04-03-2005 à 20:56:55
Adresse lue (y'a peut-être une couille dans leur flux ?)
http://www.ivao.org/network/metar.asp
Marsh Posté le 04-03-2005 à 20:59:06
PS: pour la class, j'ai recopié bêtement ce code, que j'ai adapté pour l'occasion (en version originale, il y a le même problème) :
http://www.salemioche.com/http/http_prog10.php
Marsh Posté le 04-03-2005 à 21:00:45
chrisbk a écrit : ah nan j'ai rien dit tu veux parser le header html |
Non, pas du tout, je ne veux pas parser le header html. je veux juste lire le contenu (flux ASCII).
Seulement, j'ai pas réussi à utiliser la classe WebClient (pas compris comment elle marche )
Marsh Posté le 04-03-2005 à 21:00:52
ménon chui con, webclient devrait faire ce que tu veux. si je comprends bien tu veux recup une page HTML ?
Marsh Posté le 04-03-2005 à 21:04:29
Code :
|
le bricolage du header est optionnel, bien sur
Si tu veux accerder a un page qui attends des formulaires post, alors tu fais avant le downloadData
Code :
|
vala
décodage du texte :
Code :
|
videmment fo utiliser le decodeur ad hoc
Marsh Posté le 04-03-2005 à 21:07:07
Arf, en effet ça marche beaucoup mieu
Code :
|
Comprend pas comment j'ai fait pour pas comprendre comment ça marchait
Marsh Posté le 04-03-2005 à 21:09:10
Arjuna >> utilise donc la classe HttpWebRequest, ça fait exactement ce que tu veux
Marsh Posté le 04-03-2005 à 21:32:58
Merci beaucoup en tout cas
Bon, reste plus qu'à coder l'application maintenant
Marsh Posté le 01-03-2005 à 10:21:04
Bonjour, j'ai pas mon code sous les yeux, mais disons que l'autre jour, je me suis heurté à un petit problème très con...
Je fait une requête HTTP avec l'objet httpreader (ou un nom comme ça)
Je récupère un stream, dans lequel je peux lire des array de Byte.
Deux questions :
-> Mon stream contient une suite de caractères au format ASCII simple. Est-ce qu'il y a un moyen de surcharger mon stream en streamreader, histoire de pouvoir faire des "getLine" ? (c'est un flux CSV en fait)
-> Si c'est impossible, une fois mettons que j'ai mon tampon de Bytes remplis, un byte[4096] Comment le changer en String ? Le seul truc que j'ai trouvé, c'est faire une boucle sur le tableau, et faire un "Convert.toString()" sur chaque byte et les concaténer, ce qui est très porc... Y'a pas moyen de faire mieu ? En effet, d'un point de vue représentation mémoire, à moins que je me trompe, il n'y a pourtant aucune différence entre un array de bytes et une chaîne de caractères, si ? (une chaîne de caractères, c'est bien un array de char, et un char est bien l'équivalent à un byte non ?)