繁体   English   中英

目标C中的Integer.parseInt(String s,int radix)等效

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM