gpt4 book ai didi

c++ - 如何将二进制值的字符串转换回 char

转载 作者:可可西里 更新时间:2023-11-01 16:38:44 28 4
gpt4 key购买 nike

例子

注意:我只关心字母。所以 bitset 000001 将是 aA

我有一个名为 sstring,其值为 "abc"。我获取 string 的每个 char 并将其转换为二进制值bitset 的使用。

例如

bitset <6> b1 = s[0];   //a
bitset <6> b2 = s[1]; //b
bitset <6> b3 = s[2]; //c

然后我想将结果放入字符串数组中。数组的名称是 arr(array 的每个 string 将代表每个 char 的二进制值)

例如

arr[0]   //will hold the value of char 'a' in binary form which is 000001
arr[1] //will hold the value of char 'b' in binary form which is 000010
arr[2] //will hold the value of char 'c' in binary form which is 000011

我将每个 charstring 转换为二进制的方式是

arr[0] = b1.to_string();    //arr[0] is now 000001
arr[1] = b2.to_string(); //arr[1] is now 000010
arr[2] = b3.to_string(); //arr[2] is now 000011

现在我的问题来了。我如何将它们转换回 char

例如

//I want each char to take back the each corresponding letter from the binary values

char c1; //How do i make the arr[0] value of 000001 to become 'a' again?
char c2; //Same here
char c3; //And here

最佳答案

假设您想从 ASCII 码 64 开始,并且 'a' (或 'A' )就是 000001在这种情况下,你可以简单地做

c1 = static_cast<char>(std::bitset<6>(arr[0]).to_ulong() + 64); // 

'A'十进制是 65 , 在二进制中是 0b01000001 . 'a'十进制是 97 , 在二进制中是 0b01100001 .在您的代码中,您使用 bitset<6>存储'a' (或 'A' )。 bitset<6>只能代表2^6符号,即 64 ,所以你会遇到切割。基本上是 2最重要的位将被削减。在这种情况下,bitset<6>('A')变成 0b000001 ,即 1十进制,bitset<6>('a')变成 0b1000001 ,即 33十进制。您现在可以说服自己加回 64产生正确的结果。

编辑

请注意,您也可以使用 std::stoi (仅限 C++11)将位字符串从基数 2 转换为十进制,如其他答案中所述:

char c1 = static_cast<char>(std::stoi(arr[0], nullptr, 2) + 64);

关于c++ - 如何将二进制值的字符串转换回 char,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30584463/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com