如何将块unsigned char *内存转换为[signed] char *内存块?

时间:2012-03-27 13:13:47

标签: c++ objective-c buffer asihttprequest soci

我正在开发一个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是一个可行的解决方案吗? ..如果是的话,我该怎么做? ..另外,我还有什么其他选择来解决这个问题?

2 个答案:

答案 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!