我遇到一个问题,我的方法返回的MD5字符串都是大写字母。除了使用[string lowerCaseString]
以外,还有一种方法可以使方法的输出返回小写字符串吗?上面的方法对我来说似乎很苛刻。
以下是我正在使用的方法:
- (NSString *)MD5String {
const char *cstr = [self UTF8String];
unsigned char result[16];
CC_MD5(cstr, strlen(cstr), result);
return [NSString stringWithFormat:
@"%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X",
result[0], result[1], result[2], result[3],
result[4], result[5], result[6], result[7],
result[8], result[9], result[10], result[11],
result[12], result[13], result[14], result[15]
];
}
答案 0 :(得分:4)
为什么是hackish? MD5结果中的大小写区别是没有意义的,因为实际上它不是一个返回的字符串,而是几个十六进制数字。正确的修改是使你的比较方法(假设你以后比较哈希)忽略它的情况,因为它应该没关系。
在任何情况下,您都可以通过将格式说明符更改为小写来使其小写:
return [NSString stringWithFormat:
@"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
result[0], result[1], result[2], result[3],
result[4], result[5], result[6], result[7],
result[8], result[9], result[10], result[11],
result[12], result[13], result[14], result[15]
];