我有一个指针
char *result
我链接的汇编程序写入一些数据。
我现在想要从指针中逐位读取数据
我也知道写入数据的长度,因为我的汇编程序返回了该值
有没有一种简单的方法可以做到这一点,或者我需要将其解释为字符,然后每个字符串移位8次?
答案 0 :(得分:2)
如果数据很长,通过避免除了最后一个字节之外的所有字节的位移,以及缓存,这可能比逐位处理要快一些:
void process(const char* start, size_t bitlen, void (*f)(char)){
int i, k;
register char b;
for (i = 0; i < bitlen / 8; i++){
b = start[i];
f(b & 1);
f(b & 2);
f(b & 4);
f(b & 8);
f(b & 16);
f(b & 32);
f(b & 64);
f(b & 128);
}
b = start[i];
for (k = 0; k < bitlen % 8; k++){
f((b>>=1) & 1);
}
}