openalbridge/endianness.c
changeset 2191 20c62f787a4d
child 2200 8192be6e3aef
equal deleted inserted replaced
2190:cfcad6142d48 2191:20c62f787a4d
       
     1 /*
       
     2  * OpenAL Bridge - a simple portable library for OpenAL interface
       
     3  * Copyright (c) 2009 Vittorio Giovara <vittorio.giovara@gmail.com>
       
     4  *
       
     5  * This program is free software; you can redistribute it and/or modify
       
     6  * it under the terms of the GNU General Public License as published by
       
     7  * the Free Software Foundation; version 2 of the License
       
     8  *
       
     9  * This program is distributed in the hope that it will be useful,
       
    10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
       
    11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
       
    12  * GNU General Public License for more details.
       
    13  *
       
    14  * You should have received a copy of the GNU General Public License
       
    15  * along with this program; if not, write to the Free Software
       
    16  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
       
    17  */
       
    18 
       
    19 #include <stdio.h>
       
    20 #include <stdlib.h>
       
    21 #include <stdint.h>
       
    22 #include "endianness.h"
       
    23 
       
    24 #ifdef __CPLUSPLUS
       
    25 extern "C" {
       
    26 #endif 
       
    27 	
       
    28 	//from big endian to little endian
       
    29 	int invert_endianness(int number){
       
    30 		uint8_t n1,n2,n3,n4;
       
    31 		uint32_t a1,a2,a3,a4;
       
    32 		uint32_t done = 0;
       
    33 		
       
    34 		n1 = number;
       
    35 		n2 = number >> 8;
       
    36 		n3 = number >> 16;
       
    37 		n4 = number >> 24;
       
    38 		
       
    39 		//printf("%X, %X, %X, %X\n", n1, n2, n3, n4);
       
    40 		a1 = (uint32_t) n1 << 24;
       
    41 		a2 = (uint32_t) n2 << 16;
       
    42 		a3 = (uint32_t) n3 << 8;
       
    43 		a4 = (uint32_t) n4;
       
    44 		done = a1 + a2 + a3 + a4;
       
    45 		//printf("%08X %08X %08X %08X = %08X\n", a1, a2, a3, a4, done);
       
    46 		return done;
       
    47 	}
       
    48 	
       
    49 #ifdef __CPLUSPLUS
       
    50 }
       
    51 #endif