我试图将NSString转换为uint8_t。我遇到的问题是NSString和结果uint8_t变量不匹配。下面是一些示例代码:NSString与uint8_t不匹配
NSLog(@"Key now: %@", key);
NSData* keyData = [key dataUsingEncoding:NSUTF8StringEncoding];
const uint8_t *plainBuffer = (const uint8_t*)[data bytes];
size_t plainBufferSize = strlen((char *) plainBuffer);
NSLog(@"Plain buffer: %s", plainBuffer);
NSData* testData = [[NSData alloc] initWithBytes: plainBuffer length:plainBufferSize];
NSString* testString = [[NSString alloc] initWithData: testData encoding: NSUTF8StringEncoding];
NSLog(@"Test string: %@", testString);
而且输出示例:
Key now: 9iIWBpf5R6yu5pJ93l218RsMdWBLidXt
Plain buffer: 9iIWBpf5R6yu5pJ93l218RsMdWBLidXtMdWBLidXt
Test string: 9iIWBpf5R6yu5pJ93l218RsMdWBLidXtMdWBLidXt
显然其NSData的 - > uint8_t一步多数民众赞成去错了,但我不知道为什么!
纠正我,如果我错了,但不' - [NSString dataUsingEncoding:]'丢弃终止NUL字节?你为什么不简单地使用' - [NSString UTF8String]'而不是? – 2012-12-10 19:13:05