我正在开发一个iPad项目(iOS 5.1),它需要从网址中提取图片并将其作为sqlite3 blob缓存。我正在使用ASIHTTPRequest来获取图像数据,并使用SOCI将blob插入到缓存表中。该项目是用C ++编写的(与最小的Objective-C混合)。
问题是ASIHTTPRequest通过NSData对象返回二进制数据...我可以从中获取const unsigned char *指针。但是SOCI的界面只提供了一个通过char *指针读取/写入blob数据的接口......(SOCI在打开/写入/读取sqlite_blob之前将数据写入char *缓冲区)。
那么,问题是,将我的unsigned char * buffer转换为char * buffer是一个可行的解决方案吗? ..如果是的话,我该怎么做? ..另外,我还有什么其他选择来解决这个问题?
答案 0 :(得分:3)
一个简单的演员将完成这项工作:
(unsigned char *)myCharPointer
(char *)myUnsignedCharPointer
答案 1 :(得分: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!