gpt4 book ai didi

C++ 将字符转换为字节数组

转载 作者:搜寻专家 更新时间:2023-10-31 00:31:12 25 4
gpt4 key购买 nike

我需要能够以这种格式转换 QString:“0x00 0x00 0x00 0x00”

像这样的字节数组:

0x00,
0x00,
0x00,
0x00

我能够像这样在 Visual Studio/C# 中执行此操作:

byte[] bytes = string.Split(' ').Select(s => Convert.ToByte(s, 16)).ToArray();

但是我现在正在使用 Qt/C++,我需要一种方法来做同样的事情。最简单的方法是什么?

最佳答案

我想这不是最简洁的解决方案,但至少是安全的(不附加无效值):

QString string = "0x00 0x00 0x00 0x00";
QByteArray bytes;

for(auto const& x : string.split(' '))
{
bool ok;
uint val = x.toUInt(&ok, 16);

if(ok && val <= 0xff)
bytes.append(static_cast<char>(val));
}

这可能会更快(无效值保留为 0):

QString string = "0x00 0x00 0x00 0x00";
QStringList list = string.split(' ');
QByteArray bytes(list.size(), '\0');

for(size_t i = 0; i < list.size(); ++i)
{
bool ok;
uint val = list[i].toUInt(&ok, 16);

if(ok && val <= 0xff)
bytes[i] = static_cast<char>(val);
}

如果您只想要速度,您可以省略这两种情况下的检查。

关于C++ 将字符转换为字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34434586/

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