首页 文章

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

提问于
浏览
0

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

这是NSString如何产生的

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

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

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

我想将它转换为unsigned char *

我该怎么办?

谢谢

2 回答

  • 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 .

相关问题