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