初心者の質問。
たとえば、16 進数 0xABCDEF があるとします。これを 0xAB、0xCD、および 0xEF に分割するにはどうすればよいでしょうか。こんな感じですか?
unsigned int number = 0xABCDEF
unsigned int ef = a & 0x000011;
unsigned int cd = (a>>8) & 0x000011;
unsigned int ab = (a>>16) & 0x000011;
ありがとう
初心者の質問。
たとえば、16 進数 0xABCDEF があるとします。これを 0xAB、0xCD、および 0xEF に分割するにはどうすればよいでしょうか。こんな感じですか?
unsigned int number = 0xABCDEF
unsigned int ef = a & 0x000011;
unsigned int cd = (a>>8) & 0x000011;
unsigned int ab = (a>>16) & 0x000011;
ありがとう
数値の 8 ビットを除くすべてを削除するためのマスクとして使用0xff
します。
unsigned int number = 0xABCDEF
unsigned int ef = number & 0xff;
unsigned int cd = (number>>8) & 0xff;
unsigned int ab = (number>>16) & 0xff;
unsigned int number = 0xABCDEF
unsigned int ef = number & 0xff;
unsigned int cd = (number >> 8) & 0xff;
unsigned int ab = (number >> 16) & 0xff;
ビットごとの and ( ) 操作の代わりに、コードの残りの部分とこれらの変数の操作方法によっては、、、を型にしたい場合&
があります。その場合、次のようにキャストします。ef
cd
ab
unsigned char
unsigned char
unsigned int number = 0xABCDEF
unsigned char ef = (unsigned char) number;
unsigned char cd = (unsigned char) (number >> 8);
unsigned char ab = (unsigned char) (number >> 16);
使用するマスクは0xFF
ではなく0x11
です。これとは別に、あなたは正しいです。
void splitByte(unsigned char * split, unsigned int a,int quantBytes)
{
unsigned char aux;
int i;
for(i=0;i<quantBytes;i++)
{
split[i]=a&0x00FF;
a=(a>>8);
}
for(i=0;i<quantBytes-1;i++)
{
aux = split[i];
split[i] = split[quantBytes-i-1];
split[quantBytes-i-1] = aux;
}
}
主に: unsigned char split[4]; splitByte(スプリット、0xffffffff、4);