【问题标题】:How to convert from BYTE* to QString?如何从 BYTE* 转换为 QString?
【发布时间】:2010-09-07 11:58:19
【问题描述】:

我有一个DATA_BLOB 结构,但我需要将其转换为 QString。我该怎么做?

【问题讨论】:

  • 为什么要将其转换为QString
  • @Idan K:为了与其他代码的兼容性
  • 但它实际上包含文本吗?如果是这样,使用什么编码?
  • @Idan K:我使用 (BYTE*)qstring.toUtf8().constData() 将数据放入 DATA_BLOB。我想我必须使用 QString::fromUtf8((const char*)datablob.pbData) 来获取数据...
  • 实际上这看起来像一个错误。 toUtf8 按值返回 QByteArray,您正在使用 constData 获取它的内部指针,但该指针可能会在之后立即被释放。

标签: c++ qt type-conversion qstring


【解决方案1】:

您可以将QString constructorQByteArray 参数一起使用。 您也可以将constructorconst char* 参数一起使用

希望有帮助

【讨论】:

  • 是否可以在不显式转换为 const char* 的情况下将 BYTE* 转换为 QString?
  • 我不知道有什么方法可以从 BYTE* 转换为 QString 而无需明确转换为 const char*
【解决方案2】:
BYTE* myByteBlob; 
int myByteBlobSize;

// Get the blob, find out the size.
// ...

QString myString( QByteArray( myByteBlob, myByteBlobSize));

【讨论】:

    【解决方案3】:
       BYTE* pu8_RawData = (BYTE*)i_RawData.parray->pvData;
       DWORD u32_RawLen  =        i_RawData.parray->rgsabound[0].cElements;
    
       qDebug() << QString(QByteArray((const char*) pu8_RawData, (int)u32_RawLen));
    

    【讨论】:

      猜你喜欢
      • 2012-10-02
      • 1970-01-01
      • 2016-12-04
      • 1970-01-01
      • 2016-01-29
      • 1970-01-01
      • 2018-03-25
      • 1970-01-01
      • 2022-12-20
      相关资源
      最近更新 更多