gpt4 book ai didi

c++ - "Cannot appear in a constant expression",我需要它作为一个变量,为什么它不让我这样做?

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

string convert_binary_to_hex(string binary_value, int number_of_bits)
{
bitset<number_of_bits> set(binary_value);
ostringstream result;
result << hex << set.to_ulong() << endl;
return result.str();
}

在上面的方法中,我将二进制字符串转换为十六进制字符串。由于十六进制值是 4 位,number_of_bits 变量需要是 4 的倍数,因为对于我正在编写的应用程序,binary_value 的范围可能在 4 位到 256 位之间.

如何让 bitset 的大小可变?

我的导入:

#include <stdio.h>
#include <iostream>
#include <string>
#include <bitset>
#include <sstream>

最佳答案

你不能。像这样的模板参数需要在编译时知道,因为编译器需要根据传递的值生成不同的代码。

在这种情况下,您可能想要遍历字符串并自己构建值,例如

unsigned long result = 0;
for(int i = 0; i < binary_value.length(); ++i)
{
result <<= 1;
if (binary_value[i] != '0') result |= 1;
}

它还假设您的结果比长的短,并且不会容纳 256 位值 - 但您的示例代码也不会。你需要一个大数字类型。

关于c++ - "Cannot appear in a constant expression",我需要它作为一个变量,为什么它不让我这样做?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5341396/

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