将C字符串转换为二进制表示

Mav*_*ugu 3 c string bytearray

在ANSI C中,我们如何将字符串转换为二进制字节数组?所有的谷歌搜索和搜索给了我C++和其他人的答案,而不是C.

我的一个想法是将字符串转换为ASCII,然后将每个ASCII值转换为二进制.(呃!)我知道这是最愚蠢的想法,但我不确定任何其他选择.

我听说过Java中的编码功能.我不确定这是否符合相同的目的,可以采用C.

string = "Hello"
bytearr[] = 10100101... some byte array..
Run Code Online (Sandbox Code Playgroud)

如果有人可以对此有所了解,那就太好了.

谢谢!

Ath*_*ick 8

或者你的意思是如何将C字符串转换为二进制表示?

这是一个可以将字符串转换为二进制表示的解决方案.可以很容易地将其更改为将二进制字符串保存为字符串数组.

#include <stdio.h>

int main(int argc, char *argv[])
{
    if(argv[1] == NULL) return 0; /* no input string */

    char *ptr = argv[1];
    int i;

    for(; *ptr != 0; ++ptr)
    {
        printf("%c => ", *ptr);

        /* perform bitwise AND for every bit of the character */
        for(i = 7; i >= 0; --i) 
            (*ptr & 1 << i) ? putchar('1') : putchar('0');

        putchar('\n');
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

示例输入和输出:

./ascii2bin hello

h => 01101000
e => 01100101
l => 01101100
l => 01101100
o => 01101111
Run Code Online (Sandbox Code Playgroud)