将此代码转换为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的正确方法是什么
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++) 是做什么的
这个表达式*(bytes_to_encode++)
做了两件事:
*bytes_to_encode
bytes_to_encode
将读取指针指向的内存位置的字节。
bytes_to_encode++
将指针bytes_to_encode
加 1(因为它是一个无符号字符值)。这称为后增量运算符。
由于 Qt 是一个 GUI 框架,我不明白您为什么必须转换该函数(我的意思是 Qt 中的任何内容都不会阻止您按原样使用该函数)。
无论如何:
bytes_to_encode
是一个字符指针,因此*bytes_to_encode
将返回 . 指向的字符bytes_to_encode
。 bytes_to_encode++
将返回指针然后递增它(即使其指向下一个位置。*(bytes_to_encode++)
结合两个动作,即它返回所指向的字符bytes_to_encode
然后递增指针,以便下次返回下一个字符。
我看不出您的功能与 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;