-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++)は次の 2 つのことを行います。

*bytes_to_encodebytes_to_encodeポインターが指すメモリ内の位置でバイトを読み取ります。

bytes_to_encode++ポインタを 1 インクリメントしますbytes_to_encode(unsigned char 値であるため)。これはポストインクリメント演算子と呼ばれます。

于 2013-02-08T17:49:05.373 に答える
1

Qt は GUI フレームワークであるため、その関数を変換する必要がある理由がわかりません (Qt には、その関数をそのまま使用することを妨げるものは何もないということです)。

いずれかの方法:

bytes_to_encodeは文字ポインタなので、が指す*bytes_to_encode文字を返しbytes_to_encodeます。 bytes_to_encode++はポインタを返し、次にそれをインクリメントします (つまり、次の位置を指すようにします)。*(bytes_to_encode++)両方のアクションを組み合わせます。つまりbytes_to_encode、次の文字が返されるように、が指す文字を返し、ポインタをインクリメントします。

于 2013-02-08T17:49:12.193 に答える
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; 
于 2013-02-08T19:19:16.237 に答える