0

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

这是 NSString 的产生方式

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

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

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

我想把它转换成一个 unsigned char*

我该怎么做?

谢谢

4

2 回答 2

2

一般来说,您应该NSString直接使用而不是尝试进出 Objective-C。但是有理由降级到 C(例如,使用仅 C 的 API)所以我会幽默你。;)

如果您只需要将数据传递给另一个函数,您可以这样做:

const unsigned char *cString = (const unsigned char *)[byte cStringUsingEncoding: NSASCIIStringEncoding];

如果您需要修改 C 字符串(即使其成为 non- const),则需要制作一份副本:

const unsigned char *cString = (const unsigned char *)strdup([byte cStringUsingEncoding: NSASCIIStringEncoding]);

然后free()当你完成它时:

free(cString);

请注意,这不会修改原始 C 字符串或NSString您从中创建的字符串。如果需要NSString可以修改,请使用NSMutableString.

于 2012-06-18T16:29:56.897 回答
0

试试 NSString 的 cStringUsingEncoding: 方法:

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/Reference/NSString.html#//apple_ref/doc/uid/20000154-BAJHJHHD

于 2012-06-18T16:29:08.883 回答