如何将“initWithBytes”NSString转换为unsigned char *

时间:2012-06-18 16:26:08

标签: objective-c ios nsstring char

如何将“initWithBytes”NSString转换为unsigned char *?

这是NSString如何产生

NSString *byte = [[[NSString alloc] initWithBytes:inputbytes length:inputlength encoding:NSASCIIStringEncoding] autorelease];

包含不应在位级别更改的字节数据(将是base64转换的输入)

字节中的数据是0x01 0x00 0x01,3个字节

我希望将其转换为unsigned char *

我该怎么做?

由于

2 个答案:

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