2014-11-20 27 views
0

的想法是,我喜歡0x80,0x65得到字節,我需要將這些字節轉換成二進制,8位二進制與領先的零,如果是少比8位。 (80→1000 0000,65→0110 0101)。轉換十六進制字節(沒有可顯示的字符)到8位二進制與領先的零

我發現這個:How to Convert NSInteger or NSString to a binary (string) value,但似乎它採用領先的零犯規。

誰能告訴我怎麼加0領先的,如果他們轉換二進制少於8位,而無需使用任何額外的框架?

更新:

我已經找到一種方法來做到這一點,但它似乎並不高效。通過檢查字符串的長度,如果是小於8,我只是添加缺少的0到它。下面是長度爲6的例子,爲了覆蓋所有情況,我需要8個案例。任何人都有更好的方式來做到這一點?

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

回答

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]; 
} 
相關問題