![](/img/trans.png)
[英]Understanding Java Integer.parseInt(String s, int radix) source code
[英]Integer.parseInt(String s, int radix) equivalent in Objective C
我在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;
}
并且必须在目标C中实现,因为我正在开发一个应用程序,因此必须进行一些加密。 问题是我不知道如何制作Integer.parseInt部分,将String和基数int传递给函数。 一些帮助将是巨大的。
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;
}
您当然可以选择其他编码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.