Bitshift Char Array

时间:2011-11-10 19:58:24

标签: c arrays char bit-manipulation bit-shift

如果我想将整数5移位3,那么int a = 5; int b = a << 3;,结果将为40十进制,510140101000

但是,如果我有以下char数组: 00000 00101并向左移动三位,我希望结果为00001 01000。所以我想适应0的填充。你有什么建议?

2 个答案:

答案 0 :(得分:3)

如果您指的是实际的char数组,则可以使用memmove()memset()

char str[] = "0000000101";

int shift = 3;
int length = strlen(str);

memmove(str, str + shift,length - shift);
memset(str + length - shift,'0',shift);

//  Result:
//  "0000101000"

答案 1 :(得分:1)

使用16位指针访问缓冲区,使用htons来处理字节序问题

char c[2] = {0, 5};

uint16_t* p16 = (uint16_t*)c;

*p16 = htons((ntohs(*p16) << 3));