将NSString转换为uint8_t

我正在研究Apple提供的“证书,密钥和信任编程指南”中的数据encryption示例代码。 用于encryption/解密数据的示例代码考虑uint8_t。 然而,真实世界的应用程序会在NSString对象上这样做。 我一直在试图将NSString对象转换为uint8_t,但每次我得到编译器警告。 在各种论坛上给出的“几乎”相同的问题的解决scheme似乎并不适合我。

以下是将任何string值转换为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); 
 NSString *stringToEncrypt = @"SOME STRING VALUE"; uint8_t *cString = (uint8_t *)stringToEncrypt.UTF8String;