ios - 将十六进制转换为二进制(大值)

标签 ios binary hex

-(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_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(十进制)的数字

关于ios - 将十六进制转换为二进制(大值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20294806/

相关文章:

java - bin 到 dec 的计算是否正确?

c - 保存和读取二进制列表?

c++ - 将char转换为short时如何避免0xFF前缀?

java - 如何在 Java 中将一个字节附加到字符串?

将十六进制 C 数组转换为 Matlab vector

iOS - 打开时应用程序角标(Badge)消失

ios - Xcode 6 不会创建新项目或 Playground 。它只是在这个过程中停滞不前

ios - 升级到 Swift 2.0 导致 NSCODER 出错

c++ - 使用 fwrite() 和 fread() 进行二进制输入/输出

ios - tableView cell.detailTextLabel.text 返回 nil