Stratos: Punto de Encuentro de Desarrolladores

¡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.