duda BinaryReader

12/10/2005 - 19:32 por luis | Informe spam
Tengo este código:
fe.BaseStream.Seek(-128,SeekOrigin.End);

char []tag=fe.ReadChars(3);

Es decir, me coloco 128 bytes antes de un archivo y leo tres caracteres. Sin
embargo me han pasado con algún archivo que la matriz no se llena y queda
con longitud cero. Esto no es debido a que no hayan bytes ya que todos los
archivos son grandes (de 1 mega para arriba) con lo que siempre se tiene que
poder poner 128 bytes antes del final.

Con una matriz de bytes lo soluciono pero quiero saber por que no valen
siemrpe con la matriz de char. El problema supongo es que hay veces que en
esas posiciones hay caracteres (con lo que va bien) y otras veces puede
haber cualquier byte. Si es así ¿en qué se basa c# para no considerarlos
como posibles caracteres o no (algún rango en concreto)?
 

Leer las respuestas

#1 Octavio Hernandez
12/10/2005 - 19:48 | Informe spam
Luis,

Creo que el problema está en la codificación de caracteres que utilizas.
¿Qué constructor utilizas para crear el BinaryReader? Hay una variante en la
que se indica el sistema de codificación, y otra que utiliza por defecto
UTF-8.

Echale un vistazo a esto:

http://msdn.microsoft.com/library/d...stopic.asp

Slds - Octavio

"luis" escribió en el mensaje
news:eoOz%
Tengo este código:
fe.BaseStream.Seek(-128,SeekOrigin.End);

char []tag=fe.ReadChars(3);

Es decir, me coloco 128 bytes antes de un archivo y leo tres caracteres.
Sin
embargo me han pasado con algún archivo que la matriz no se llena y queda
con longitud cero. Esto no es debido a que no hayan bytes ya que todos los
archivos son grandes (de 1 mega para arriba) con lo que siempre se tiene
que
poder poner 128 bytes antes del final.

Con una matriz de bytes lo soluciono pero quiero saber por que no valen
siemrpe con la matriz de char. El problema supongo es que hay veces que en
esas posiciones hay caracteres (con lo que va bien) y otras veces puede
haber cualquier byte. Si es así ¿en qué se basa c# para no considerarlos
como posibles caracteres o no (algún rango en concreto)?














Preguntas similares