gpt4 book ai didi

c++ - 将整数转换为位

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:06:42 24 4
gpt4 key购买 nike

我有字节到二进制字符串的函数,

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();
}

我如何以同样的方式将一个整数写入位?我不想在二进制字符串的开头有额外的 0,所以这就是为什么我每次都不知道如何创建可变长度的原因。另外,我没有使用 std::bitset。

最佳答案

我只是将其作为答案发布。它更短、更安全,而且最重要的是,它已完成

#include <string>
#include <bitset>
#include <type_traits>

// SFINAE for safety. Sue me for putting it in a macro for brevity on the function
#define IS_INTEGRAL(T) typename std::enable_if< std::is_integral<T>::value >::type* = 0

template<class T>
std::string integral_to_binary_string(T byte, IS_INTEGRAL(T))
{
std::bitset<sizeof(T) * CHAR_BIT> bs(byte);
return bs.to_string();
}

int main(){
unsigned char byte = 0x03; // 0000 0011
std::cout << integral_to_binary_string(byte);
std::cin.get();
}

输出:

00000011

更改了函数名称,虽然我对那个不满意...有人有好主意吗?

关于c++ - 将整数转换为位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6038718/

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