我在Java中有这个功能:
private String hexStringToByteString(String s) {
String r = "";
for (int i = 0; i < s.length(); i += 2)
r += (char) Integer.parseInt(s.substring(i, i + 2), 16);
return r;
}
并且必须在Objective C中实现这一点,因为我正在开发一个应用程序并且必须进行一些加密。问题是我不知道如何制作Integer.parseInt部分,将String和radix int传递给函数。一些帮助会很棒。
答案 0 :(得分:0)
NSString r = @"";
r = [r stringByAppendingString: [ [s substringWithRange:NSRangeMake(i, i + 2)] intValue]];
或者:
NSMutableString r = @"";
[r appendingString: [ [s substringWithRange:NSRangeMake(i, i + 2)] intValue]];
我只相信有更好的方法可以实现同样的目标。您能否提供一些关于s
包含什么以及您将要实现的内容的更多信息?例如当这样做只是为了摆脱空格,那么下面会做 - 即使没有for循环。
NSMutableString r = [NSMutableString stringWithString:s];
[r replaceOccurrencesOfString:@" " withString:"" options:NSLiteralSearch range:NSMakeRange(0, [s length])];
根据您的评论进行修改。 但要注意。仅将此作为起点。我以前从未这样做过。可能有更好的解决方案,它可能包含小错误。
- (NSString) hexStringToByteString(NSString s) {
NSMutableData d = [NSData dataWithLength: [s length] / 2];
NSUInteger v;
for (int i = 0, i < [s length], i+=2) {
NSScanner *scanner = [NSScanner scannerWithString:[s substringWithRange:NSRangeMake(i, i + 2)]];
[scanner scanHexInt:&v];
[d appendBytes:&v length:1];
}
NSData r = [[NSString alloc] initWithData:d encoding:NSUTF8StringEncoding];
return r;
}
当然,您可以选择不同的编码。