私は、Cプログラミングクラスの割り当てのためのコンソールベースの小さなゲームを作成する途中です。私は、テキストの色とテキストの背景を追加することにより、より見やすくユニークなものにすることに決めました。私は解決策を探して私の探求にあったもののこの表現は何を意味しますか? (CのSetConsoleTextAttribute関数)
、私は私のプロジェクトのために望んでいただけの方法を行います。この便利な機能を見つけたが、問題は、私は理解していないこの部分があるということです。
WORD wColor = ((BackC & 0x0F) << 4) + (ForgC & 0x0F);
ここで、BackC
とForgC
には整数が与えられ、データ型はWORD
は単なるunsigned short intのtypedefに過ぎません。具体的には、私が理解していないのは((BackC & 0x0F) << 4) + (ForgC & 0x0F)
部分です。誰もこれで私を助けることができますか?私は関数を使うことができますが、関数の仕組みを知りたいと思っています...ありがとう!各BackC
とForgC
の下位4ビットを取り、8ビット値を得るためにそれらを結合する場合
はここで完全なソースコード(colorExample.c)
#include <windows.h>
#include <stdio.h>
void SetColorAndBackground(int ForgC, int BackC);
int main()
{
SetColorAndBackground(10,1); //color value range 0 up-to 256
printf("what is text background color \n");
SetColorAndBackground(11,1);
printf("how about this?");
getch();
return 0;
}
void SetColorAndBackground(int ForgC, int BackC)
{
WORD wColor = ((BackC & 0x0F) << 4) + (ForgC & 0x0F);
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), wColor);
return;
}
http://en.wikipedia.org/wiki/Bitwise_operation –