如果我想将整数5
移位3,那么int a = 5; int b = a << 3;
,结果将为40
十进制,5
为101
且40
为101000
。
但是,如果我有以下char
数组:
00000 00101
并向左移动三位,我希望结果为00001 01000
。所以我想适应0
的填充。你有什么建议?
答案 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));