繁体   English   中英

C从char指针一点一点地读取

[英]C reading bit by bit from char pointer

我有一个指针

char *result

我的链接汇编程序在其中写入一些数据。
我现在想从指针中一点一点地读取数据。
我还知道以位为单位的写入数据的长度,因为我的汇编程序返回了该值。
有没有一种简单的方法可以执行此操作,或者我需要将其解释为字符,然后将每个字符位移8次?

如果数据很长,则可以避免逐字节处理最后一个字节(除最后一个字节)之外的所有字节,并进行缓存:

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);
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM