【问题标题】:what this code do [closed]这段代码做了什么[关闭]
【发布时间】:2013-01-24 13:24:20
【问题描述】:

将此代码转换为Qt的正确方法是什么

base64_encode(unsigned char const* bytes_to_encode, unsigned int in_len)
{

 while (in_len--) {
      std::cout<< *(bytes_to_encode++)<<std::endl;
}
}

*(bytes_to_encode++) 是做什么的

【问题讨论】:

  • Qt 是一个库,而不是一种语言。
  • 也许在尝试使用该语言之前先学习一下?
  • 我知道 qt 是 skd 并且我知道语言,但是这段代码对我来说是模棱两可的,谢谢
  • @user522745 如果像简单的指针操作和后增量这样的东西对您来说是模棱两可的,那么您不懂这种语言。

标签: qt


【解决方案1】:

表达式*(bytes_to_encode++) 做了两件事:

*bytes_to_encode 将读取内存中bytes_to_encode 指针指向的位置的字节。

bytes_to_encode++ 将指针bytes_to_encode 增加1(因为它是一个无符号字符值)。这称为后增量运算符。

【讨论】:

    【解决方案2】:

    由于 Qt 是一个 GUI 框架,我不明白您为什么必须转换该函数(我的意思是 Qt 中没有任何东西会阻止您按原样使用该函数)。

    无论如何:

    bytes_to_encode是一个字符指针,所以*bytes_to_encode会返回bytes_to_encode指向的字符。 bytes_to_encode++ 将返回指针然后递增它(即使其指向下一个位置。*(bytes_to_encode++) 结合了这两个动作,即它返回 bytes_to_encode 指向的字符然后递增指针,以便下次返回下一个字符。

    【讨论】:

    • 这是一个C代码做base64,我想把它移植到Qt
    【解决方案3】:

    我看不出你的函数与 Base64-Encoding 有什么关系。不过,看看QByteArray::fromBase64QByteArray::toBase64

    const QByteArray bytes_to_encode = "your data";
    const QByteArray encoded = bytes_to_encode.toBase64();
    std::cout << encoded.constData() << std::endl;
    

    解码:

    const QByteArray encoded = "eW91cl9kYXRh";
    const QByteArray decoded = QByteArray::fromBase64( encoded );
    std::cout << decoded.constData() << std::endl; 
    

    【讨论】:

    • 是的 QbyteArray 默认做 base64 谢谢
    猜你喜欢
    • 1970-01-01
    • 2014-11-12
    • 1970-01-01
    • 2022-06-28
    • 1970-01-01
    • 2018-08-09
    • 2016-02-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多