将整数转换为位
我有字节到二进制字符串的函数,
std::string byte_to_binary(unsigned char byte)
{
int x = 128;
std::ostringstream oss;
oss << ((byte & 255) != 0);
for (int i = 0; i < 7; i++, x/=2)
oss << ((byte & x) != 0);
return oss.str();
}
如何以相同的方式将 int 写入位?我不想在二进制字符串的开头有额外的 0,所以这就是为什么我无法弄清楚如何每次创建一个可变长度。 另外,我没有使用 std::bitset。
I have byte to binary string function,
std::string byte_to_binary(unsigned char byte)
{
int x = 128;
std::ostringstream oss;
oss << ((byte & 255) != 0);
for (int i = 0; i < 7; i++, x/=2)
oss << ((byte & x) != 0);
return oss.str();
}
How can i write an int to bits in same way? I don't want extra 0's at the beginning of binary string so that is why i can't figure out how to create a variable length each time.
Also, i'm not using std::bitset.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我将将此作为答案发布。它更短、更安全,而且最重要的是,它完成了。
输出:
更改了函数名称,尽管我对此不满意......有人有一个好主意吗?
I'll just post this as an answer. It is shorter, safer and, what's most important, it is done.
Output:
Changed function name, though I'm not happy with that one... anyone got a nice idea?
像这样的东西应该可以工作(尽管我很快就破解了它并且还没有测试):
Something like this should work (though I hacked it up quickly and haven't tested):
您可以使用 std:bitset 并将任何数字转换为任何大小的位字符串,例如 64
You can do it using std:bitset and convert any number into bit string of any size, for example 64
既然您在评论中提到了对 C 风格的希望,您可以考虑使用 itoa (或 _itoa)如果您不担心 ANSI-C 标准。许多编译器在 stdlib.h 中支持它。它还删除前导 0:
Since you mentioned your wish for C style in the comments, you might consider using itoa (or _itoa) if you are not worried about ANSI-C standard. Many compilers support it in stdlib.h. It also strips the leading 0's: