Concatenar bytes

18/08/2004 - 10:19 por Noemí | Informe spam
Hola a todos,

necesito concatenar 2 bytes y el resultado convertirlo en
un entero.
Para aclararnos:
Dim b1 As Byte = 58
Dim b2 As Byte = 152
Dim res As Integer = CInt(b1 & b2)

El problema es q el resultado es 58152, mientras q si
convirtiera el 58 a binario, lo concatenase con el 152 en
binario, es decir: 0011101010011000 y lo paso a entero,
el resultado sería 15000 q es lo q quiero sacar.

Alguna idea???

Muchas gracias.
Saludos.

Preguntas similare

Leer las respuestas

#1 Jsenso
18/08/2004 - 10:58 | Informe spam
Creo que deberias utilizar desplazamientos de bits. Creo que existen los
operadores >> y <<.
Un byte son 8 bits y quiere concatenar 2 bytes (en total son 16 bits.)

Necesitas depositar el primer byte en una estructura mas grande por ejemplo
un entero,

0000000011101101 (byte en el entero)

luego desplazarlo << 8 (8 bits )

1110110100000000

despues pasar el segundo byte a otro entero

0000000001101101

y finalmente sumar los dos enteros

1110110100000000 + 0000000001101101



Saludos.





"Noemí" escribió en el mensaje
news:827d01c484fc$20f998b0$
Hola a todos,

necesito concatenar 2 bytes y el resultado convertirlo en
un entero.
Para aclararnos:
Dim b1 As Byte = 58
Dim b2 As Byte = 152
Dim res As Integer = CInt(b1 & b2)

El problema es q el resultado es 58152, mientras q si
convirtiera el 58 a binario, lo concatenase con el 152 en
binario, es decir: 0011101010011000 y lo paso a entero,
el resultado sería 15000 q es lo q quiero sacar.

Alguna idea???

Muchas gracias.
Saludos.
Respuesta Responder a este mensaje
#2 Noemí
18/08/2004 - 11:41 | Informe spam
Hola,

El problema es que tengo un vector de bytes, pero lo que
recibo son estos bytes convertidos a integer, ¿cómo los
puedo pasar a binario?

gracias.





Creo que deberias utilizar desplazamientos de bits. Creo


que existen los
operadores >> y <<.
Un byte son 8 bits y quiere concatenar 2 bytes (en total


son 16 bits.)

Necesitas depositar el primer byte en una estructura


mas grande por ejemplo
un entero,

0000000011101101 (byte en el entero)

luego desplazarlo << 8 (8 bits )

1110110100000000

despues pasar el segundo byte a otro entero

0000000001101101

y finalmente sumar los dos enteros

1110110100000000 + 0000000001101101



Saludos.





"Noemí" escribió


en el mensaje
news:827d01c484fc$20f998b0$
Hola a todos,

necesito concatenar 2 bytes y el resultado convertirlo en
un entero.
Para aclararnos:
Dim b1 As Byte = 58
Dim b2 As Byte = 152
Dim res As Integer = CInt(b1 & b2)

El problema es q el resultado es 58152, mientras q si
convirtiera el 58 a binario, lo concatenase con el 152 en
binario, es decir: 0011101010011000 y lo paso a entero,
el resultado sería 15000 q es lo q quiero sacar.

Alguna idea???

Muchas gracias.
Saludos.


.

Respuesta Responder a este mensaje
#3 Jsenso
18/08/2004 - 12:23 | Informe spam
Creo que no es necesario pasarlo a binario,
tu simplemente trabaja con el integer.

Por ejemplo ...

tenemos el numero 8 que para ti es un byte dentro de un integer,
primero de todo has de eliminar la parte alta del integer (debes saber la
longitud del integer , (creo que son 32 bits)), con la mascara
0...0000000011111111


nuestro_integer= 255 AND nuestro_integer

' esta operacion elimina con ceros la parte alta del integer.



Ahora lo desplazas

nuestro_integer << 8

(continua con lo de antes )

no hace falta convertirlo a binario ;)

Saludos







"Noemí" escribió en el mensaje
news:0fb601c48507$7e0700f0$
Hola,

El problema es que tengo un vector de bytes, pero lo que
recibo son estos bytes convertidos a integer, ¿cómo los
puedo pasar a binario?

gracias.





Creo que deberias utilizar desplazamientos de bits. Creo


que existen los
operadores >> y <<.
Un byte son 8 bits y quiere concatenar 2 bytes (en total


son 16 bits.)

Necesitas depositar el primer byte en una estructura


mas grande por ejemplo
un entero,

0000000011101101 (byte en el entero)

luego desplazarlo << 8 (8 bits )

1110110100000000

despues pasar el segundo byte a otro entero

0000000001101101

y finalmente sumar los dos enteros

1110110100000000 + 0000000001101101



Saludos.





"Noemí" escribió


en el mensaje
news:827d01c484fc$20f998b0$
Hola a todos,

necesito concatenar 2 bytes y el resultado convertirlo en
un entero.
Para aclararnos:
Dim b1 As Byte = 58
Dim b2 As Byte = 152
Dim res As Integer = CInt(b1 & b2)

El problema es q el resultado es 58152, mientras q si
convirtiera el 58 a binario, lo concatenase con el 152 en
binario, es decir: 0011101010011000 y lo paso a entero,
el resultado sería 15000 q es lo q quiero sacar.

Alguna idea???

Muchas gracias.
Saludos.


.

Respuesta Responder a este mensaje
#4 Leonardo Azpurua
18/08/2004 - 15:34 | Informe spam
"Noemí" escribió en el mensaje
news:827d01c484fc$20f998b0$
Hola a todos,

necesito concatenar 2 bytes y el resultado convertirlo en
un entero.
Para aclararnos:
Dim b1 As Byte = 58
Dim b2 As Byte = 152
Dim res As Integer = CInt(b1 & b2)

El problema es q el resultado es 58152, mientras q si
convirtiera el 58 a binario, lo concatenase con el 152 en
binario, es decir: 0011101010011000 y lo paso a entero,
el resultado sería 15000 q es lo q quiero sacar.

Hola, Noemí:

Es probable que exista alguna técnica basada en mover rangos de memoria,
pero no me la sé.

Lo que hacía yo en estos casos era, dado un arreglo de dos bytes b(0), b(1)
y asumiendo que el más significativo es el segundo (es el formato estandar
de INTEL - creo recordar que es lo que llaman "big endian"), convertirlos a
entero así:

intResultado = CInt(b(1)) * 256 + b(0)

en el caso de los enteros de 16 bits, si el valor de b(1) fuera mayor o
igual que 128 te daría un resultado incorrecto, ya que se interpretará como
un número negativo. Los Integer de VB.Net son numeros de 32 bits, y no
tendrás ese problema.

Si los numeros de entrada fueran "little endian", basatará con que inviertas
los indices (cambiar 1 por 0 y viceversa).

Salud!

Leonardo
Respuesta Responder a este mensaje
#5 Cesar Rivera
19/08/2004 - 06:53 | Informe spam
Saludos :),

Creo que a lo que te refieres es a convertir ambos números a su
representación binaria, concatenar y luego volver a convertir de binario a
entero. Prueba con la clase Convert.

Ejemplo:

Dim b1 as Byte = 58
Dim b2 as Byte = 152

Dim sBin1 as String = Convert.toString(b1,2) ' Base 2
Dim sBin2 as String = Convert.toString(b2,2) ' Base 2

Dim sCad as String = sBin1 & sBin2

Dim resultado as Integer = Convert.ToInt32(sCad,2) ' Indica cadena está en
base 2 y se convertirá en base 10




"Noemí" wrote:

Hola a todos,

necesito concatenar 2 bytes y el resultado convertirlo en
un entero.
Para aclararnos:
Dim b1 As Byte = 58
Dim b2 As Byte = 152
Dim res As Integer = CInt(b1 & b2)

El problema es q el resultado es 58152, mientras q si
convirtiera el 58 a binario, lo concatenase con el 152 en
binario, es decir: 0011101010011000 y lo paso a entero,
el resultado sería 15000 q es lo q quiero sacar.

Alguna idea???

Muchas gracias.
Saludos.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida