我有一个来自服务器的十六进制字符串,我必须将该十六进制字符串转换为NSString。我使用了这篇文章中的一些方法How to convert an NSString to hex values十六进制字符串到NSString
我几乎得到了相同的文本,只是在某些地方随机出现。 我已将Ú更改为粗体文本,以便在以下示例中查找。 你们能帮我解决算法的问题吗?
我的算法
- (NSString *) stringFromHex:(NSString *)str
{
NSMutableData *stringData = [[NSMutableData alloc] init];
unsigned char whole_byte;
char byte_chars[3] = {'\0','\0','\0'};
int i;
for (i=0; i < [str length]/2; i++) {
byte_chars[0] = [str characterAtIndex:i*2];
byte_chars[1] = [str characterAtIndex:i*2+1];
whole_byte = strtol(byte_chars, NULL, 16);
[stringData appendBytes:&whole_byte length:1];
}
return [[NSString alloc] initWithData:stringData encoding:NSASCIIStringEncoding];
}
六角从服务器
7539686132564968635943666c6348532f564a656261736b526a47585a75734a625a61316c5753475a645575625a5253386f473574347678694c4930695648704c52473170547a4f6b356552da554675394e58672b6943743857524637557748755961634435306936437a7a535a726d6e53664e6e523862433232594a4f593638655464314c6747324763544f56357a736f544c49734e734ada672f77472f6b6b4b48446c644659426d51334d3dda
012串 从服务器普通字符串这是RSA编码的字符串
使用我的上述算法u9ha2VIhcYCflcHS
u9ha2VIhcYCflcHS/VJebaskRjGXZusJbZa1lWSGZdUubZRS8oG5t4vxiLI0iVHpLRG1pTzOk5eR UFu9NXg + iCt8WRF7UwHuYacD50i6CzzSZrmnSfNnR8bC22YJOY68eTd1LgG2GcTOV5zsoTLIsNsJ 克/ WG/kkKHDldFYBmQ3M =
普通字符串转换/ VJebaskRjGXZusJbZa1lWSGZdUubZRS8oG5t4vxiLI0iVHpLRG1pTzOk5eR Ú UFu9NXg + iCt8WRF7UwHuYacD50i6CzzSZrmnSfNnR8bC22YJOY68eTd1LgG2GcTOV5zsoTLIsNsJ Ú克/ WG/kkKHDldFYBmQ3M = Ú
使用NSUTF8StringEncoding或其他函数返回空字符串或与NSASCIIStringEncoding相同的结果。 所以现在我必须使用 stringByReplacingOccurrencesOfString:@“Ú”withString:@“” – 2015-02-06 09:58:27