我正在研究Apple在“证书, key 和信任编程指南”中提供的数据加密示例代码。用于加密/解密数据的示例代码考虑了uint8_t。但是,实际应用程序将在NSString对象上执行此操作。我一直在尝试将NSString对象转换为uint8_t,但是每次我尝试都会收到编译器警告。在各种论坛中针对“几乎”相同问题提供的解决方案似乎对我不起作用。

最佳答案

这是将任何字符串值转换为uint8_t*的示例。最简单的方法是将NSData的字节强制转换为uint8_t *。另一个选择是分配内存并复制字节,但是您仍然需要以某种方式跟踪长度。

NSData *someData = [@"SOME STRING VALUE" dataUsingEncoding:NSUTF8StringEncoding];
const void *bytes = [someData bytes];
int length = [someData length];

//Easy way
uint8_t *crypto_data = (uint8_t*)bytes;

可选方式
//If you plan on using crypto_data as a class variable
// you will need to do a memcpy since the NSData someData
// will get autoreleased
crypto_data = malloc(length);
memcpy(crypto_data, bytes, length);
//work with crypto_data

//free crypto_data most likely in dealloc
free(crypto_data);

10-06 04:08