Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 拆分十六进制数_C - Fatal编程技术网

C 拆分十六进制数

C 拆分十六进制数,c,C,新手问题 比如说,我有十六进制数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; 谢谢使用0xff作为掩码删除除8位以外的所有数字: unsigne

新手问题

比如说,我有十六进制数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;

谢谢

使用
0xff
作为掩码删除除8位以外的所有数字:

unsigned int number = 0xABCDEF
unsigned int ef = number & 0xff;
unsigned int cd = (number>>8) & 0xff;
unsigned int ab = (number>>16) & 0xff;

要使用的掩码将是
0xFF
,而不是
0x11
。除此之外,你是对的

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 int number = 0xABCDEF
unsigned char ef = (unsigned char) number;
unsigned char cd = (unsigned char) (number >> 8);
unsigned char ab = (unsigned char) (number >> 16);
void splitByte(无符号字符*split,无符号整数a,整数字节)
{
无符号字符aux;
int i;
对于(i=0;i>8);
}

for(i=0;iHex
0x0011
是二进制的
00000000000100001
,所以掩码将只给您两位而不是全部八位。什么是
a
,您是指
数字
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;

  }
}