くるしいプログラミング日報

くるしい職業からくるしい職業に転職した人はどうなってしまうのかを検証します。

20190221 くるしいプログラミング日報

本日の学び

int a,b,c;

とあって、
aの値は0<=a<256の範囲とする。
このときに
aを変数b,cに変換して格納して

printf("%c", b);
printf("%c\n", c);

として表記してaの値を16進数で出力したい。
このときどうやるかって話です。

printf( "%X\n", a );

このやり方は今回はなしで。

僕のやったやり方の場合

int main()
{
	int a = 58;
	int b, c;
	int amari;
	b = 0;
	c = 0;
	amari = 58 % 16;
	b = (a - amari) / 16;
	c = amari;

	if (b < 10)
	{
		b += 0x30;
	}
	else
	{
		b += 0x37;
	}
	if (c < 10)
	{
		c += 0x30;
	}
	else
	{
		c += 0x37;
	}

	printf("%c", b);
	printf("%c\n", c);
	system("pause");
}

こんな感じにしました。
aを10進数で58、求めたい出力は0x3Aとなります。

他の人の書き方

    int a = 58;
    int b = a >> 4 & 0x0F;
    int c = a >> 0 & 0x0F;
    printf("%c", b >= 0xA ? b + 0x37 : b + 0x30 );
    printf("%c\n", c >= 0xA ? c + 0x37 : c + 0x30 );
    system("pause");

多分やってることは同じ。

    char ascii[] = "0123456789ABCDEF";
    int a = 58;
    int b = a >> 4 & 0x0F;
    int c = a >> 0 & 0x0F;
    printf("%c", ascii[b] );
    printf("%c\n", ascii[c] );
    system("pause");

なるほどなーって思ったのはこっち。

他にも上記の条件を満たして書き方思いつく人いたら教えてください。
itoaとか使っても行ける気はする。



明日以降の課題

ストリーム

ファイルの情報(サイズ)を読み取ってそれに合わせてchar型配列のメモリのサイズを指定

getc or getwc

winapiをもっと理解

バイナリ

2進数でファイルを読み込み //cでコンソールでならできた

1バイトずつ読み込み //cでコンソールでならできた

16進数変換 //cでコンソールでならできた

16進数をchar型に変換 //cでコンソールでならできた

テキストファイルに出力 //出力だけやった

間違ってるところ、知識の補足等あったら教えてください。

必死です。

100%くるしいよになるお手伝いとしてこれからウソ情報教えます。

まずこれは基本なんですが、エディターはvimを使います。
こういうのはダメです。

おわい飯

おまけ

コードを見やすくするためにブログの記述方法を変えました。
特別協力
ド (@d0kusounko) | Twitter
www.doutei.pro