0

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

我发现了这个:[如何将 NSInteger 或 NSString 转换为二进制(字符串)值,但它似乎没有使用前导零。

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

更新:

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

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

4

1 回答 1

0

找到了答案:

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];
}
于 2014-11-20T22:40:07.067 回答