|
こんにちは。
>Unionを使用して、16ビットのデータを上下8ビット入れ替える関数
>をプログラムしたいのですが、どのようにプログラムしていいか
>わかりません。教えてください。
このような感じでどうでしょう。
#include <stdio.h>
typedef union {
unsigned char c[2];
unsigned short n;
} W_16;
void swap_w16( unsigned short *x );
int main(void)
{
unsigned short x = 0x55aa;
printf("%hx\n", x);
swap_w16(&x);
printf("%hx\n", x);
return (0);
}
void swap_w16( unsigned short *x )
{
unsigned char w;
w = ((W_16 *)x)->c[1];
((W_16 *)x)->c[1] = ((W_16 *)x)->c[0] ;
((W_16 *)x)->c[0] = w;
}
|