首页 > 解决方案 > 从 C 中的 C 样式字符串中获取位序列?

问题描述

我需要从 C 中固定长度的 C 样式字符串中获取位序列,char*我该怎么做?我需要代表字符串的位序列,而不是特定的位。我需要在 C 中而不是在 C++ 中严格执行。

标签: chash

解决方案


您可以使用只有一个的简单位掩码,1并一次扫描一个字节的字符串,从mask = 0x80(binary 10000000) 开始,一直到1(binary 00000001)。

#include <stdio.h>

#define N 5

int main(void) {
    char mystring[N] = "abcd";
    unsigned i;
    unsigned char mask;

    for (i = 0; i < N; i++) {
        unsigned char c = mystring[i];
        unsigned char mask = 0x80;

        do {
            putchar(c & mask ? '1' : '0');
            mask >>= 1;
        } while (mask > 0);

        putchar(' ');
    }

    putchar('\n');
    return 0;
}

结果:

01100001 01100010 01100011 01100100 00000000

推荐阅读