如何将“initWithBytes”NSString转换为unsigned char *?
这是NSString如何产生
NSString *byte = [[[NSString alloc] initWithBytes:inputbytes length:inputlength encoding:NSASCIIStringEncoding] autorelease];
包含不应在位级别更改的字节数据(将是base64转换的输入)
字节中的数据是0x01 0x00 0x01,3个字节
我希望将其转换为unsigned char *
我该怎么做?
由于
答案 0 :(得分:2)
一般来说,您应该直接使用NSString
而不是尝试进出Objective-C。但是有理由下降到C(例如使用仅限C的API),所以我会幽默你。 ;)
如果您只需要将数据传递给另一个函数,则可以执行以下操作:
const unsigned char *cString = (const unsigned char *)[byte cStringUsingEncoding: NSASCIIStringEncoding];
如果您需要修改C字符串(即将其设为非const
),则需要复制:
const unsigned char *cString = (const unsigned char *)strdup([byte cStringUsingEncoding: NSASCIIStringEncoding]);
然后free()
当你完成它时:
free(cString);
请注意,这不会修改原始C字符串或您从中创建的NSString
。如果您需要NSString
可以修改,请使用NSMutableString
。
答案 1 :(得分:0)