【问题标题】:Convert Hexadecimal to Binary (large values)将十六进制转换为二进制(大值)
【发布时间】:2013-11-30 12:54:02
【问题描述】:
-(NSString *)toBinary:(NSUInteger)input
{
    if (input == 1 || input == 0)
        return [NSString stringWithFormat:@"%u", input];
    return [NSString stringWithFormat:@"%@%u", [self toBinary:input / 2], input % 2];
}

NSString *hex = txtHexInput.text;
NSUInteger hexAsInt;
[[NSScanner scannerWithString:hex] scanHexInt:&hexAsInt];
NSString *binary = [NSString stringWithFormat:@"%@", [self toBinary:hexAsInt]];
txtBinaryInput.text = binary;

上面的代码很好用……直到你需要超过 32 位。任何将十六进制转换为二进制大于 32 位值的指针?谢谢。

【问题讨论】:

  • 使用uint64_t 获得64位。除此之外,您还需要描述如何获得更大的整数。
  • 我现在正在研究这个...有没有一种有效的方法可以将它合并到我当前的代码中?

标签: ios binary hex


【解决方案1】:

您可以使用uint64_tunsigned long long 获得64 位。

-(NSString *)toBinary:(unsigned long long)input
{
    if (input == 1 || input == 0)
        return [NSString stringWithFormat:@"%llu", input];
    return [NSString stringWithFormat:@"%@%llu", [self toBinary:input / 2], input % 2];
}

NSString *hex = txtHexInput.text;
unsigned long long hexAsULL;
[[NSScanner scannerWithString:hex] scanHexLongLong:&hexAsULL];
NSString *binary = [NSString stringWithFormat:@"%@", [self toBinary:hexAsULL]];
txtBinaryInput.text = binary;

这将为您提供从 0 到 18,446,744,073,709,551,615(十进制)的数字

【讨论】:

  • 哦,谢谢!我正在按照这些思路工作,但没有正确完成它。我将 %ull 更改为 %llu。
猜你喜欢
  • 2012-06-26
  • 2012-01-06
  • 1970-01-01
  • 2016-08-28
  • 2013-07-25
相关资源
最近更新 更多