【问题标题】:Convert hex byte(no displayable characters) into 8 bit binary with leading zero将十六进制字节(无可显示字符)转换为带前导零的 8 位二进制
【发布时间】:2015-01-18 22:14:51
【问题描述】:

我的想法是我得到像 0x80,0x65 这样的字节,如果小于 8 位,我需要将这些字节转换为带有前导零的 8 位二进制的二进制。 (80 -> 1000 0000, 65-> 0110 0101)。

我找到了这个:[How to Convert NSInteger or NSString to a binary (string) value,但它似乎没有使用前导零。

如果他们在不使用任何额外框架的情况下转换的二进制小于 8 位,谁能告诉我如何添加前导 0?

更新:

我找到了一种方法来做到这一点,但它似乎效率不高。通过检查字符串的长度,如果它小于 8,我只需在其中添加缺失的 0。下面是长度为 6 的示例,因此要涵盖所有情况,我将需要 8 个案例。任何人有更好的方法来做到这一点?

if ([str length]==6) { str=[NSMutableString stringWithFormat:@"%@%@",@"00",str]; NSLog(@"Binary version: %@", str); }

【问题讨论】:

    标签: c# objective-c binary byte uint8t


    【解决方案1】:

    找到答案:

    NSInteger theNumber = mynumber;
    NSMutableString *str = [NSMutableString string];
    for(NSInteger numberCopy = theNumber; numberCopy > 0; numberCopy >>= 1)
    {
        // Prepend "0" or "1", depending on the bit
        [str insertString:((numberCopy & 1) ? @"1" : @"0") atIndex:0];
    }
    for(int i= [str length];i < 8;i++){
        str=[NSMutableString stringWithFormat:@"%@%@",@"0",str];
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-18
      • 1970-01-01
      • 2015-07-20
      • 2015-11-18
      • 2013-08-05
      • 2017-03-09
      • 1970-01-01
      相关资源
      最近更新 更多