我有一个由四个无符号字符组成的数组.我想把它当作一个32位数字(假设char的高位不关心.我只关心较低的8位).然后,我想循环移动任意数量的地方.我有一些不同的移位大小,都是在编译时确定的.
例如
unsigned char a[4] = {0x81, 0x1, 0x1, 0x2};
circular_left_shift(a, 1);
/* a is now { 0x2, 0x2, 0x2, 0x5 } */
Run Code Online (Sandbox Code Playgroud)
编辑:大家都在想我为什么没有提到CHAR_BIT!= 8,因为这是标准C.我没有指定一个平台,那你为什么假设一个?
我想创建一个命名管道,就像"mkfifo"创建的那样,但有一点需要注意.我希望管道是双向的.也就是说,我希望进程A写入fifo,进程B进行读取,反之亦然.由"mkfifo"创建的管道允许进程A读取写入管道的数据.通常我会使用两个管道,但我试图模拟一个实际的设备,所以我希望open(),read(),write()等的语义尽可能与实际设备类似.任何人都知道一种技术来实现这一目标而不需要使用两个管道或命名套接字?
是否可以忽略git中删除的文件?git update-index --assume-unchanged允许我忽略修改,但它仍然跟踪删除.
(这是类似的,但我找不到"John Doe"在哪里重述他的问题:在git中忽略修改过的(但未提交的)文件?)
对于阅读代码的人来说哪个更清楚?"long"或"long int"."long int"更具描述性,但"long"更简洁.