如何在NSString中使用NULL字符?

joe*_*els 4 objective-c character-encoding nsstring

在PHP中,我可以调用base64_encode("\x00". $username. "\x00". $password),并且"\x00"表示NULL字符。

现在,在Objective-C中,我有一个将NSData转换为DaveDribin创建的base64编码的NSString的函数。

如何从具有NULL字符的字符串中创建数据?

这似乎不起作用...

NSData * authCode = [[NSString stringWithFormat:@"%c%@%c%@", '\0', self.username, '\0', self.password] dataUsingEncoding:NSUTF8StringEncoding];
Run Code Online (Sandbox Code Playgroud)

ste*_*anB 5

像这样:

char bytes[] = "\0username\0password";
NSData * data = [NSData dataWithBytes:bytes length:sizeof(bytes)];

NSLog(@"%@", data);
Run Code Online (Sandbox Code Playgroud)

输出:

2010-01-22 09:15:22.546 app[6443] <00757365 726e616d 65007061 7373776f 726400>
Run Code Online (Sandbox Code Playgroud)

或来自NSString

char bytes[] = "\0username\0password";
NSString * string = [[NSString alloc] initWithBytes:bytes length:sizeof(bytes) encoding:NSUTF8StringEncoding];
NSData * data = [string dataUsingEncoding:NSUTF8StringEncoding];
Run Code Online (Sandbox Code Playgroud)

您可以在用户名/密码和结尾之间看到空字节的开头-因为char[]终止为空。