我正在寻找一种优雅的Cocoa方式将NSData对象序列化为十六进制字符串。这样做的目的是在将用于通知的deviceToken发送到我的服务器之前进行序列化。
我已经有了以下实现,但我认为肯定有更短更好的方法。
+ (NSString*) serializeDeviceToken:(NSData*) deviceToken
{
NSMutableString *str = [NSMutableString stringWithCapacity:64];
int length = [deviceToken length];
char *bytes = malloc(sizeof(char) * length);
[deviceToken getBytes:bytes length:length];
for (int i = 0; i < length; i++)
{
[str appendFormat:@"%02.2hhX", bytes[i]];
}
free(bytes);
return str;
}
,或者省略转换并使用
@"%02hhx"` :) - qix[hexString appendFormat:@"%02x", (unsigned int)dataBuffer[i]];
更好(占用更少的内存空间)。 - Marek R