当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《C++将char转换为字节数组》经验,为你挑选了1个好方法。

我需要能够以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++,我需要一种方法来做同样的事情.最简单的方法是什么?



1> LogicStuff..:

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

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

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

推荐阅读
jerry613
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有