假设我有一个len = 2的char数组。
char* array = malloc(2);
memset(array, 0, 2);
这是2个字节= 0000000000000000.我怎么能把它变成11111111111111111?
我可以使用for循环和指针来完成它,但我不认为这是最干净的方法。
答案 0 :(得分:1)
假设您的长度2
仅在您的示例中,并且无论char数组的长度如何,您都希望有一些工作。您仍然需要一个循环,但您可以一次性反转最多64位的二进制值(在64位CPU上,忽略SIMD功能)。如果您真的想要获得最佳性能,那么您需要了解SIMD。
你可以在循环的每次迭代中检查数组的剩余长度(你没有反转的值),并一次反转64,32,16或8位,这是最合适的。
答案 1 :(得分:1)
试试这个:
IOHIDValueCallback?