最简洁的方法来反转C中char数组的二进制值?

时间:2017-10-25 12:58:46

标签: c arrays binary

假设我有一个len = 2的char数组。

char* array = malloc(2);
memset(array, 0, 2);

这是2个字节= 0000000000000000.我怎么能把它变成11111111111111111?

我可以使用for循环和指针来完成它,但我不认为这是最干净的方法。

2 个答案:

答案 0 :(得分:1)

假设您的长度2仅在您的示例中,并且无论char数组的长度如何,您都希望有一些工作。您仍然需要一个循环,但您可以一次性反转最多64位的二进制值(在64位CPU上,忽略SIMD功能)。如果您真的想要获得最佳性能,那么您需要了解SIMD。

你可以在循环的每次迭代中检查数组的剩余长度(你没有反转的值),并一次反转64,32,16或8位,这是最合适的。

答案 1 :(得分:1)

试试这个:

IOHIDValueCallback?