-8

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

4

3 回答 3

1

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

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

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

于 2013-02-08T17:49:05.373 回答
1

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

无论如何:

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

于 2013-02-08T17:49:12.193 回答
0

我看不出您的功能与 Base64-Encoding 有什么关系。但是,看看QByteArray ::fromBase64和QByteArray::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; 
于 2013-02-08T19:19:16.237 回答