如何在NSString中使用NULL字符?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在NSString中使用NULL字符?相关的知识,希望对你有一定的参考价值。
在php中,我可以调用base64_encode("x00". $username. "x00". $password)
,"x00"
表示NULL字符。
现在,在Objective-C中,我有一个函数将NSData转换为由DaveDribin创建的base64 encoded NSString。
如何从具有NULL字符的字符串创建数据?
这似乎不起作用......
NSData * authCode = [[NSString stringWithFormat:@"%c%@%c%@", ' ', self.username, ' ', self.password] dataUsingEncoding:NSUTF8StringEncoding];
答案
像这样:
char bytes[] = " username password";
NSData * data = [NSData dataWithBytes:bytes length:sizeof(bytes)];
NSLog(@"%@", data);
输出:
2010-01-22 09:15:22.546 app[6443] <00757365 726e616d 65007061 7373776f 726400>
或者来自NSString
:
char bytes[] = " username password";
NSString * string = [[NSString alloc] initWithBytes:bytes length:sizeof(bytes) encoding:NSUTF8StringEncoding];
NSData * data = [string dataUsingEncoding:NSUTF8StringEncoding];
您可以在开头,在用户名/密码和结尾之间看到空字节 - 因为char[]
为空终止。
另一答案
你的语法是正确的。 NSString只是不能很好地处理NULL
字节。我找不到任何关于它的文档,但是NSString将默默地忽略%c
格式说明符,其参数为0
(并且在该注释中,字符常量' '
扩展为整数0
;这是正确的)。但是,它可以处理直接嵌入到NSString文字中的