add uint32_read interface.
This commit is contained in:
parent
eb3596b745
commit
5143381995
9
uint/uint32_read.c
Normal file
9
uint/uint32_read.c
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
#define NO_UINT32_MACROS
|
||||||
|
#include "uint32.h"
|
||||||
|
|
||||||
|
uint32 uint32_read(const char *in) {
|
||||||
|
return (((uint32)(unsigned char)in[3])<<24) |
|
||||||
|
(((uint32)(unsigned char)in[2])<<16) |
|
||||||
|
(((uint32)(unsigned char)in[1])<<8) |
|
||||||
|
(uint32)(unsigned char)in[0];
|
||||||
|
}
|
9
uint/uint32_read_big.c
Normal file
9
uint/uint32_read_big.c
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
#define NO_UINT32_MACROS
|
||||||
|
#include "uint32.h"
|
||||||
|
|
||||||
|
uint32 uint32_read_big(const char *in) {
|
||||||
|
return (((uint32)(unsigned char)in[0])<<24) |
|
||||||
|
(((uint32)(unsigned char)in[1])<<16) |
|
||||||
|
(((uint32)(unsigned char)in[2])<<8) |
|
||||||
|
(uint32)(unsigned char)in[3];
|
||||||
|
}
|
35
uint32.h
35
uint32.h
@ -3,40 +3,21 @@
|
|||||||
|
|
||||||
typedef unsigned int uint32;
|
typedef unsigned int uint32;
|
||||||
|
|
||||||
#ifndef __linux__
|
#if defined(__i386__) && !defined(NO_UINT32_MACROS)
|
||||||
#define NO_UINT32_MACROS
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef NO_UINT32_MACROS
|
|
||||||
extern void uint32_pack(char *out,uint32 in);
|
|
||||||
extern void uint32_pack_big(char *out,uint32 in);
|
|
||||||
extern void uint32_unpack(const char *in,uint32* out);
|
|
||||||
extern void uint32_unpack_big(const char *in,uint32* out);
|
|
||||||
#else
|
|
||||||
|
|
||||||
#include <endian.h>
|
|
||||||
|
|
||||||
#if __BYTE_ORDER == __LITTLE_ENDIAN
|
|
||||||
|
|
||||||
#define uint32_pack(out,in) (*(uint32*)(out)=(in))
|
#define uint32_pack(out,in) (*(uint32*)(out)=(in))
|
||||||
|
|
||||||
extern void uint32_pack_big(char *out,uint32 in);
|
|
||||||
|
|
||||||
#define uint32_unpack(in,out) (*(out)=*(uint32*)(in))
|
#define uint32_unpack(in,out) (*(out)=*(uint32*)(in))
|
||||||
|
#define uint32_read(in) (*(uint32*)in)
|
||||||
|
extern void uint32_pack_big(char *out,uint32 in);
|
||||||
extern void uint32_unpack_big(const char *in,uint32* out);
|
extern void uint32_unpack_big(const char *in,uint32* out);
|
||||||
|
extern uint32 uint32_read_big(const char *in);
|
||||||
#else
|
#else
|
||||||
|
|
||||||
extern void uint32_pack(char *out,uint32 in);
|
extern void uint32_pack(char *out,uint32 in);
|
||||||
|
extern void uint32_pack_big(char *out,uint32 in);
|
||||||
#define uint32_pack_big(out,in) (*(uint32*)(out)=(in))
|
|
||||||
|
|
||||||
extern void uint32_unpack(const char *in,uint32* out);
|
extern void uint32_unpack(const char *in,uint32* out);
|
||||||
|
extern void uint32_unpack_big(const char *in,uint32* out);
|
||||||
#define uint32_unpack_big(in,out) (*(out)=*(uint32*)(in))
|
extern uint32 uint32_read(const char *in);
|
||||||
|
extern uint32 uint32_read_big(const char *in);
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user