elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  [C#] Como funciona Byte y Encoding
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [C#] Como funciona Byte y Encoding  (Leído 1,417 veces)
YuseTist


Desconectado Desconectado

Mensajes: 396


$~*|_


Ver Perfil
[C#] Como funciona Byte y Encoding
« en: 6 Septiembre 2015, 21:25 pm »

Buenas,

Tengo una duda con definición de variables.

Tengo esto:

Código
  1. byte[] raw = wc.DownloadData(laUrl);

Y funciona correctamente.

Sin embargo intento ponerlo así:

Código
  1. string raw = wc.DownloadData(laUrl);

Y me subraya la definición de la variable. ¿Qué diferencia hay entre esas dos variables?

He visto que son los sockets también en transmite de mensajes se hace mediante byte[] ¿por qué?


¿Y esta función exactamente que realiza?

Código
  1. string webData = System.Text.Encoding.UTF8.GetString(raw);

Parece que se codifica... ¿por qué?

Cualquier información adicional la agradecería.
Gracias.

Saludos.


En línea

Esta página web no está disponible - Google Chrome
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.708



Ver Perfil
Re: [C#] Como funciona Byte y Encoding
« Respuesta #1 en: 6 Septiembre 2015, 22:23 pm »

Tengo esto:

Código
  1. byte[] raw = wc.DownloadData(laUrl);

Y funciona correctamente.

Sin embargo intento ponerlo así:

Código
  1. string raw = wc.DownloadData(laUrl);

Y me subraya la definición de la variable. ¿Qué diferencia hay entre esas dos variables?

Byte y String son dos types diferentes, además, la primera variable es un Array de Bytes.

Para que la segunda orden te funcionase, deberías utilizar la función WebClient.DownloadString, aunque imagino que eso no es lo que pretendes hacer realmente.
WebClient.DownloadString Method - MSDN

No entiendo muy bien cual es tu duda respecto a eso, ya que se ve claramente que son dos tipos diferentes, pues no es lo mismo un byte que una cadena de texto, aunque esta consista en bytes de datos (concretamente un buffer de 1 byte por cada caracter ANSI o 2 bytes por cada caracter Unicode).



¿Y esta función exactamente que realiza?

Código
  1. string webData = System.Text.Encoding.UTF8.GetString(raw);

Parece que se codifica... ¿por qué?

Al contrario, se descodifica.

Teniendo un array de bytes (que supuestamente contengan caracteres UTF-8), dicha función decodifica los bytes para representarlos en una cadena de texto usando dicha codificación de texto, UTF-8.

Cuando no estés seguro del propósito de un método, función, o cualquier otro tipo demiembro, es tan simple como que pases el puntero del mouse por encima del nombre del método en la IDE de Visual Studio... de esta manera IntelliSense te informará de todos los detalles incluyendo sus parámetros y no tendrás que preguntar "¿qué hace esto?" o "¿cómo se usa?".
También puedes usar el Object Inspector en la IDE, o recurrir a la referencia online (u offline) de la MSDN:
Encoding.GetString Method (Byte()) - MSDN



He visto que son los sockets también en transmite de mensajes se hace mediante byte[] ¿por qué?

Por qué los paquetes que se transmiten contienen eso, una serie de bytes, que luego debes interpretar/descifrar.

Saludos


« Última modificación: 6 Septiembre 2015, 23:09 pm por Eleкtro » En línea


YuseTist


Desconectado Desconectado

Mensajes: 396


$~*|_


Ver Perfil
Re: [C#] Como funciona Byte y Encoding
« Respuesta #2 en: 7 Septiembre 2015, 11:56 am »

Gracias por la respuesta, todo muy razonable.

En MSDN pone lo siguiente:
Código:
Cuando se reemplaza en una clase derivada, descodifica todos los bytes de la matriz de bytes especificada en una cadena.

Esto significa que byte[] me codifica dicho mensaje (respuesta)

Código
  1. byte[] raw = wc.DownloadData(laUrl);

Y luego me lo decodifica:

Código
  1. string webData = System.Text.Encoding.UTF8.GetString(raw);

Si mal no entendí, ¿funciona ciertamente así? (Corrígeme si me equivoco)
Gracias.

Saludos.
En línea

Esta página web no está disponible - Google Chrome
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.708



Ver Perfil
Re: [C#] Como funciona Byte y Encoding
« Respuesta #3 en: 8 Septiembre 2015, 01:18 am »

Si mal no entendí, ¿funciona ciertamente así? (Corrígeme si me equivoco)

hmmm... se podría decir que si.

Te lo intentaré explicar de otra forma por si acaso lo entiendes mejor...

Cita de: MSDN
WebClient.DownloadData: Downloads the resource as a Byte array from the URI specified

La función DownloadData descarga "X" y te entrega ese "X" acomodado en un Array de bytes.

¿Qué contiene el Array?, podría ser los bytes que componen ua imagen Bitmap, o un archivo de música, o un string UTF-8 ...cómo supuestamente es en este caso.

Tu tienes unos bytes que sabes que se pueden interpretar en un string legible, y sabes que el string tiene codificación UTF-8, así que usas la función Encoding.UTF8.Getstring para decodificar el contenido, si usases codificación ASCII o UTF32 etc se verian caracteres ilegibles.

Un ejemplo real-world:

Código
  1. WebClient wc = new WebClient();
  2. UTF8Encoding enc = new UTF8Encoding();
  3. byte[] data = wc.DownloadData("http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-demo.txt");
  4. string str = enc.GetString(data);
  5.  
  6. File.WriteAllText("c:\\utf8.txt", str, enc);

Saludos
« Última modificación: 8 Septiembre 2015, 01:29 am por Eleкtro » En línea


YuseTist


Desconectado Desconectado

Mensajes: 396


$~*|_


Ver Perfil
Re: [C#] Como funciona Byte y Encoding
« Respuesta #4 en: 8 Septiembre 2015, 18:22 pm »

Gracias por la respuestas.
Ya más o menos entiendo su funcionamiento de igual modo lo pondré en practica.
En el MSDN también vi su manejo.

Saludos.
En línea

Esta página web no está disponible - Google Chrome
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problemas Stream, Encoding
.NET (C#, VB.NET, ASP)
Keyen Night 4 2,137 Último mensaje 2 Mayo 2010, 18:35 pm
por Keyen Night
[Sources Code] RotBits [Byte TO Byte ]
Programación Visual Basic
x64core 8 3,869 Último mensaje 22 Octubre 2011, 00:46 am
por BlackZeroX (Astaroth)
Convertir dos bytes menores de 16 en un byte que los contenga como nibbles
Programación C/C++
Sutano 8 3,180 Último mensaje 24 Agosto 2012, 07:48 am
por BlackZeroX (Astaroth)
Http gzip encoding
Programación C/C++
soyloqbuskas 0 714 Último mensaje 19 Septiembre 2013, 17:34 pm
por soyloqbuskas
Filestream . Byte a Byte
.NET (C#, VB.NET, ASP)
blaron 3 1,725 Último mensaje 5 Abril 2014, 02:01 am
por Eleкtro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines