Conversion de Dato

24/11/2006 - 08:13 por Luis Eduardo Alvarado Meza | Informe spam
Antes que todo como estan gente del foro tengo ya más de 3 semanas de no
visitarlo por cuestiones laborales, sin embargo me lastima ver que el
problema de los post basura se quedara para siempre según veo, y a pesar de
que los post han disminuido no asi las participaciones de Jesus, Maxi,
Alberto ... entre otros no menos importantes.

Hoy necesito de su ayuda, me encuentro leyendo un archivo binario codificado
en ANS.1, pero a pesar de que es binario se lee byte por byte, estoy usando
un BinaryReader.

A traves del Convet.ToInt32 tengo la posibilidad de convertir a entero
desde una base 2, es decir binario. Anteriormente tenia una función propia
pero el Convert resulto ser más eficiente. Sin embargo, tengo una funcion
propia que convierte de Entero (o Byte) a una cadena de bits, pero desearia
saber si conocen alguna función propia del .net que hiciera este proceso
inverso al primero.

De no existir, me gustaria saber que algoritmo es más rapido o eficiente
para hacer esta trasformacion, actualmente yo tengo una division sucesiva
entre 2 hasta llegar a 0 usando Mod para el residuo. Veran el archivo a
leer tiene 6 Mb promedio y el ASN.1 no es tan fácil, y cualquier mejora que
me ahorre segundos de proceso es bienvenida asi como cualquier comentario
para agilizar la lectura o trabajar con bits.

Agredeciendoles su ayuda me despido bye
 

Leer las respuestas

#1 Alberto Poblacion
24/11/2006 - 09:17 | Informe spam
"Luis Eduardo Alvarado Meza" wrote in
message news:
A traves del Convet.ToInt32 tengo la posibilidad de convertir a entero
desde una base 2, es decir binario. Anteriormente tenia una función propia
pero el Convert resulto ser más eficiente. Sin embargo, tengo una funcion
propia que convierte de Entero (o Byte) a una cadena de bits, pero
desearia saber si conocen alguna función propia del .net que hiciera este
proceso inverso al primero.



No está claro a qué lo quieres convertir. ¿Qué entiendes por "cadena de
bits"? ¿Un String estilo "1001011101"? ¿O un array de bytes, es decir, pasar
de Integer a Byte(4)? ¿O un array de 32 Boolean? ¿O un objeto de tipo
BitArray?
Lo pregunto porque el entero YA está codificado en memoria en forma
binaria, con lo que el problema no es "convertir" nada, sino solo "mover"
los bits a otro tipo de contenedor. La solución óptima dependerá del tipo de
contenedor al que los quieras mover.
Si ya tienes una función hecha, puedes "postearla" aqui, para que veamos
si se nos ocurre alguna forma de optimizarla.

Preguntas similares