我發現並修改了一個int-to-bin轉換器,它似乎正在工作。然後我把一個bin-to-int轉換器放在一起,但結果表明即時讀取二進制向後。我改變了for循環的方向:for(i = 11; i> = 0; i--),但得到了相同的結果。由二進制位轉換引起的轉變
@implementation MainViewController
- (void)intToBin:(int)theNumber
{
NSMutableString *str = [NSMutableString string];
NSInteger numberCopy = theNumber;
for(NSInteger i = 0; i <= 11 ; i++)
{
[str insertString:((numberCopy & 1) ? @"1" : @"0") atIndex:0];
numberCopy >>= 1;
}
NSLog(@"Binary version: %@", str);
}
- (void)binToInt:(NSString *)theBinary
{
int decNumber = 0;
int i;
for(i = 0; i <=11; i++) // then tried: for(i = 11; i >=0; i--)
{
NSString *digitChar = [theBinary substringWithRange: NSMakeRange (i, 1)];
int digitNum = [digitChar intValue];
NSLog(@"digitNum: %d", digitNum);
if(digitNum == 1) decNumber += digitNum * pow(2,i);
}
NSLog(@"Decimal version: %d", decNumber);
}
- (void)viewDidLoad
{
[super viewDidLoad];
[self intToBin:3434];
[self intToBin:3418];
[self intToBin:2906];
[self binToInt:@"110101101010"];
[self binToInt:@"110101011010"];
[self binToInt:@"101101011010"];
}
日誌詳細信息:
[Session started at 2011-03-23 22:05:30 -0500.]
Binary version: 110101101010
Binary version: 110101011010
Binary version: 101101011010
digitNum: 1
digitNum: 1
digitNum: 0
digitNum: 1
digitNum: 0
digitNum: 1
digitNum: 1
digitNum: 0
digitNum: 1
digitNum: 0
digitNum: 1
digitNum: 0
Decimal version: 1387
digitNum: 1
digitNum: 1
digitNum: 0
digitNum: 1
digitNum: 0
digitNum: 1
digitNum: 0
digitNum: 1
digitNum: 1
digitNum: 0
digitNum: 1
digitNum: 0
Decimal version: 1451
digitNum: 1
digitNum: 0
digitNum: 1
digitNum: 1
digitNum: 0
digitNum: 1
digitNum: 0
digitNum: 1
digitNum: 1
digitNum: 0
digitNum: 1
digitNum: 0
Decimal version: 1453
[Session started at 2011-03-23 22:06:46 -0500.]
Binary version: 110101101010
Binary version: 110101011010
Binary version: 101101011010
digitNum: 0
digitNum: 1
digitNum: 0
digitNum: 1
digitNum: 0
digitNum: 1
digitNum: 1
digitNum: 0
digitNum: 1
digitNum: 0
digitNum: 1
digitNum: 1
Decimal version: 1387
digitNum: 0
digitNum: 1
digitNum: 0
digitNum: 1
digitNum: 1
digitNum: 0
digitNum: 1
digitNum: 0
digitNum: 1
digitNum: 0
digitNum: 1
digitNum: 1
Decimal version: 1451
digitNum: 0
digitNum: 1
digitNum: 0
digitNum: 1
digitNum: 1
digitNum: 0
digitNum: 1
digitNum: 0
digitNum: 1
digitNum: 1
digitNum: 0
digitNum: 1
Decimal version: 1453
我錯過了什麼?有沒有更好的方式做到這一點,而不使用十六進制?或與...
在此先感謝您的幫助。 MP
謝謝,這也工作,但我不知道如何。你能否解釋一下或建議一個鏈接?我將使用這種類型的代碼,我認爲二進制文件將盡可能簡潔。不得不轉換字符串和從字符串轉換真的會破壞我認爲我會找到的任何優點。 – michael 2011-03-24 04:04:26
「binary」(用於一切的內部表示形式)和「二進制編碼爲0和1的字符串」之間存在區別,它是最簡潔的表示形式之一。 – Anomie 2011-03-24 11:50:02