Logo

¡Bienvenido a Stratos!

Acceder

Foros



Como Rotar Un Numero Entero En Big Endian

Iniciado por fiero, 27 de Septiembre de 2005, 09:46:43 PM

« anterior - próximo »

fiero

 Al hilo de la otra discusión sobre los números negativos, me animo a postear una cosa que me ocurrió el otro dia. Resulta que estaba intentando cargar un archivo MOV, en el que todos los datos se guardan en formato "big endian", o sea, primero la parte alta del numero y luego la baja, al revés de como se almacena en ram. El caso es que no quería ir leyendo byte a byte, y preferí leer los números enteros de golpe (los 4 bytes), pero claro, luego hay que darle la vuelta.

¿Cómo se le daria la vuelta en un lenguaje de alto nivel, C o C#, de una forma elegante?

A mi no se me ocurrió nada medianamente sencillo, así que tiré por el ensamblador, pero seguro que en C hay una forma facil, que no se me ocurre

void rotateDWORD(void *p)
{
   _asm{
 mov ebx,p
 ror dword ptr[ebx],16
 ror word ptr[ebx],8
 ror word ptr[ebx+2],8
}
}


un saludo
www.videopanoramas.com Videopanoramas 3D player

zupervaca

 en el antiguo c se usaban las funciones estandar ntohX y htonX, en c-sharp no se si se podra ya que deberia hacerse automaticamente ya que como mucho funciona en windows y linux

editado: aclaro, automaticamente si el c-sharp funcionara en mac o un amiga, me imagino que se partiria de que los datos se trabajan como en un pc

fiero

 ah, ok, no conocia esas funciones de sockets. Gracias  :)  
www.videopanoramas.com Videopanoramas 3D player






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.
Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.