C++:原始字符的1和0的整数数组

Sha*_*dul 0 c++

我有1和0的int数组像 -

01101000
01100101
01101100
01101100
01101111
Run Code Online (Sandbox Code Playgroud)

这是"你好"的位转换.我想将它转换回字符数组,如 -

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

你能为这些人提供C++代码片段吗?

div*_*ira 5

你可以定义一个函数:

char bitsToChar(const char *bits)
{
    char result = 0;
    for (int i = 0; i < 8; i++)
    {
        result = (result << 1) | bits[i];
    }
    return result;
}
Run Code Online (Sandbox Code Playgroud)

在每个循环中,下一位附加到存储结果的右侧,将先前添加的位"推"到左侧.

所以这段代码:

#include <iostream>
using namespace std;

char bits[5][8] = {
    {0,1,1,0,1,0,0,0},
    {0,1,1,0,0,1,0,1},
    {0,1,1,0,1,1,0,0},
    {0,1,1,0,1,1,0,0},
    {0,1,1,0,1,1,1,1} };

char bitsToChar(const char *bits)
{
    char result = 0;
    for (int i = 0; i < 8; i++)
    {
        result = (result << 1) | bits[i];
    }
    return result;
}

int main(const char* argv[], const int argc)
{
    for (int j = 0; j < 5; j++)
    {
        for (int i = 0; i < 8; i++)
        {
            cout << (int)bits[j][i];
        }
        cout << " -> " << bitsToChar(bits[j]) << endl;
    }
}
Run Code Online (Sandbox Code Playgroud)

产生以下输出:

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