如何转换二进制"字符串"到一个字符串

时间:2015-11-27 05:12:03

标签: c++

我现在已经研究过这个问题一段时间了,没有任何事情发生。那么我怎样才能将二进制字符串转换为可以像字符串一样编辑的内容。

这样的事情(抱歉伪代码。)

unsigned char binary = 0100001100001111;

string binaryString = binary.tostring;
//binaryString = 0100001100001111 (as a string)

如果这也是可能的,我想知道是否有可能"删除"字符串中的某些字符,并用其他字符替换它们。 (有点像C#中的.remove()。)

编辑:二进制代码存储在

unsigned char gfx[32 * 64];

并在此代码中设置:

x = V[(opcode & 0x0F00) >> 8];
y = V[(opcode & 0x00F0) >> 4];
height = opcode & 0x000F;

V[0xF] = 0;
for (int yline = 0; yline < height; yline++)
{
    pixel = memory[I + yline];
    for (int xline = 0; xline < 8; xline++)
    {
        if ((pixel & (0x80 >> xline)) != 0)
        {
            if (gfx[(x + xline + ((y + yline) * 64))] == 1)
            {
                V[0xF] = 1;
            }
            gfx[x + xline + ((y + yline) * 64)] ^= 0x1;
        }
    }
}

opcodeVPixel都是十六进制值。

2 个答案:

答案 0 :(得分:1)

只是为了好玩:

#include <iostream>

template <typename T>
struct bit_string
{
    char data[sizeof(T) * 8 + 1];

    explicit bit_string(T x)
    {
        constexpr size_t n = sizeof(T) * 8;
        for (size_t i = 0; i != n; ++i)
            data[n - i - 1] = (x & (1 << i)) ? '1' : '0';
        data[n] = '\0';
    }

    operator const char * () const
    {
        return data;
    }
};

int main()
{
    using namespace std;

    cout << bit_string<unsigned short>(1000) << endl;
}
  

0000001111101000

答案 1 :(得分:0)

编辑后我可以看到你有一系列字符。因此,只需将其转换为具有以下内容的字符串,然后您就可以使用您想要处理字符串的任何std支持。关于你的其余代码,我不确定目标是什么。

#include <string>
#include <iostream> 
#include <algorithm> 
int main() {

    // This does what you asked
    char binary[] = {1,0,1};
    std::string strbinary;    
    for (int i=0; i < sizeof(binary); i++) {
        strbinary.append(std::to_string(binary[i]));
    }
    std::cout << strbinary;     

    //This replace
    std::replace( strbinary.begin(), strbinary.end(), '0', 'y');
    std::cout << strbinary;
}