这段代码做了什么

时间:2013-02-08 17:44:56

标签: qt

将此代码转换为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 ++)做什么

3 个答案:

答案 0 :(得分:1)

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

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

bytes_to_encode++会将指针bytes_to_encode递增1(因为它是无符号的char值)。这称为后增量运算符。

答案 1 :(得分:1)

由于Qt是一个GUI框架,我不明白你为什么要转换那个函数(我的意思是Qt中的任何内容都不会阻止你按原样使用该函数)。

反正:

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

答案 2 :(得分:0)

我看不出你的功能与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;