关于大印度小印度字节序转换的问题
请教高手,关于大印度和小印度字节序转换的问题。
首先我来描述一下我的目的需求:
假如我想写一个函数,这个函数声明为这样的形式:
void BigIndiaToLittleIndia(const BYTE * bigIndiaStream,
const char * type,
BYTE *littleIndiaStream);
我的目的是想把某个类型的一个结构从BigInia字节序转换成LittleIndia字节序,
第一个参数就是需要转换的结构变量的字节流首地址,第二个参数是这个结构的类型(我不知道用const char *type来传这个参数是否合适),第三个就是转换后的这个结构变量的字节流。
就是说假如我有这么一个结构
typedef struct{
long x;
int y;
} A;
typedf struct{
A a;
char name[20];
}B;
现在我有B的一个实例
B b;
b.a.x=234;
b.a.y=2;
b.name="frank";
假如我想把b转换成littleindia字节序(默认为我当前系统使用BigIndia字节序)
我就可以调用上面定义的函数:
BYTE *b_out=new BYTE[sizeof(B)];
BigIndiaToLittleIndia((BYTE *)&b,"B",b_out);
问题是如何实现BigIndiaToLittleIndia这个函数????我考虑了一下似乎有些难度,就是说我解决不了这样一个问题,任意给定一个结构类型,我怎么确定它包含哪些元素,以及这些元素如果又是结构类型我怎么进一步分解,因为理论上只有基本类型才好做字节序直接转换。请高手指点!!!!!