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
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
ah, ok, no conocia esas funciones de sockets. Gracias :)