1

URLから画像を取得し、sqlite3 blobとしてキャッシュする必要があるiPadプロジェクト(iOS 5.1)に取り組んでいます。ASIHTTPRequest を使用して画像データをフェッチし、SOCI を使用して blob をキャッシュ テーブルに挿入しています。このプロジェクトは C++ で書かれています (最小限の Objective-C が混在しています)。

問題は、ASIHTTPRequest が NSData オブジェクトを介してバイナリ データを返すことです。そこから const unsigned char* ポインタを取得できます。しかし、SOCI のインターフェイスは、char* ポインターを介して blob データを読み書きするためのインターフェイスのみを提供します ... (SOCI は、sqlite_blob を開く/書き込む/読み取る前に、データを char* バッファーに内部的に書き込みます)。

それで、問題は、unsigned char* バッファを char* バッファに変換することは実行可能な解決策ですか? ..もしそうなら、どうすればいいですか?..そうでなければ、これを解決するために他にどのようなオプションが必要ですか?

4

2 に答える 2

3

簡単なキャストで仕事ができます:

(unsigned char *)myCharPointer
(char *)myUnsignedCharPointer
于 2012-03-27T13:15:28.457 に答える
0

@Binyamin の発言を詳しく説明するには、必ず memcpy を使用してください。これにより、バッファーが消えないことがわかります。

uint8_t *origBuffer = [data bytes];
char *myBuffer = malloc([data length]);

memcpy(myBuffer, origBuffer, [data length]);

// don't forget to free 'myBuffer' when done!
于 2012-03-27T13:20:52.563 に答える