gpt4 book ai didi

c++ - 将字节数组转换为十六进制时的空格 std::string C++

转载 作者:行者123 更新时间:2023-11-30 02:42:21 25 4
gpt4 key购买 nike

我正在使用以下函数将字节数组(Crypto++ key )转换为十六进制字符串

std::string Hexa::byte_to_hex_encoder(unsigned char *array, int len){
std::stringstream ss;
for(int i=0;i<len;++i)
ss << std::hex << std::uppercase <<std::setw(2) <<(int)array[i];
return ss.str();
}

字节数组的大小为 16,当我不使用 setw(2) 时,我得到一个包含较少字符的十六进制字符串,例如 30 或有时是 31。当我使用 setw (2) 我在十六进制字符串中得到随机空格,如

5CA0 138C5487D2C6D929EC36B694890

如何在十六进制字符串中没有空格的情况下将字节数组转换为十六进制字符串,反之亦然?

最佳答案

您还需要 setfill('0') 以便正确填充数字。

如果没有 setw,像 7 这样的数字只会显示为 7,这会使您的字符串变短,如您所见。使用 setw 但没有 setfill,它被填充到正确的 length, 但有一个空格。

添加 setfill 确保它用零填充。

对于您的代码:

ss << std::hex
<< std::uppercase
<< std::setw(2)
<< std::setfill('0')
<< (int)array[i];

关于c++ - 将字节数组转换为十六进制时的空格 std::string C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27195515/

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