重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

(1)int num = 255;
 uchar c; ~~~
 c = num;
 printf("%x",c);
 で表示すると0xFFが表示される?

(2)int num = 256;
 uchar c; ~~~
 c = num;
 printf("%x",c);
 の場合もprintfで表示すると0x00が表示される?

上記の場合にuchar[2]の配列に、
 uchar[1] = 0x01
uchar[0] = 0x00
 と入れる場合にはどうすればよいでしょうか?

宜しく御願いします。

A 回答 (2件)

※方法1


uchar c[2] ;
*(short *)c = 256 ;

※方法2
c[0] = num % 256 ;
c[1] = num / 256 ;

※方法3
c[0] = num & 0xff ;
c[1] = (num >> 8) & 0xff ;

※方法4 #1と同じ
typedef union NUM_u { int n ; uchar c[sizeof(int)] ; } NUM_t ;
((NUM_t *)c)->n = 256 ;
    • good
    • 0

いろいろな方法があります。


以下は、ほんの一例です。

#include <stdio.h>

typedef unsigned char uchar;
typedef union {
int n;
uchar c[2];
} U;

int main(void)
{
U u;

u.n = 256;
printf("%02x %02x\n", u.c[1], u.c[0]);
return 0;
}
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!