2012-05-19 12 views
5

Kaynaklar klasöründe bir ikili dosya (file.bin) var, onu okumak ve ikili olarak göstermek istiyorum. Buradaki fikir, ikili bilgiyi bir diziye koymasıdır, ancak, ilk başta, bir UILabel'de göstermeye çalışıyorum, şu şekilde:NSData'yı bir NSString'de ikili olarak gösterme

`NSData * databuffer; NSString * stringdata;

`

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"file" ofType:@"bin"]; 
NSData *myData = [NSData dataWithContentsOfFile:filePath]; 

if (myData) { 
     stringdata = [NSString stringWithFormat:@"%@",[myData description]]; 
     labelfile.text = stringdata; 
} 
Ama HEX verileri gösterir. Bir NSMutableArray içine koymak için ikili olarak nasıl yapabilirim? Teşekkürler.

+1

"İkili olarak", "temel 2 notasyon" anlamına mı geliyor? – dasblinkenlight

+0

Evet, beğenmek gerekirse: NSSTRING string = @ "01000101000 .." – Sergiodiaz53

+0

Kendi ikili kod çözücünüzü yazmanız gerekecek. B "101010 .." u yorumlayabilecek bir dil yazdım, ama ikili bir okuyucuyu okuyacak veya biçimlendirecek herhangi bir standart dil görmedim. –

cevap

7

Bunu yapan yerel bir şey olup olmadığını bilmiyorum, ancak bir geçici çözüm önerebilirim. Neden dönüşümü yapan kendi fonksiyonunuzu yapmıyorsunuz? Eğer Hex değerlerini almak yerine

: İşte benim örnek

NSString *str = @"Af01"; 
NSMutableString *binStr = [[NSMutableString alloc] init]; 

for(NSUInteger i=0; i<[str length]; i++) 
{ 
    [binStr appendString:[self hexToBinary:[str characterAtIndex:i]]]; 
} 
NSLog(@"Bin: %@", binStr); 

geçici çözüm işlevi: Bu yardımcı olur

- (NSString *) hexToBinary:(unichar)myChar 
{ 
    switch(myChar) 
    { 
     case '0': return @"0000"; 
     case '1': return @"0001"; 
     case '2': return @"0010"; 
     case '3': return @"0011"; 
     case '4': return @"0100"; 
     case '5': return @"0101"; 
     case '6': return @"0110"; 
     case '7': return @"0111"; 
     case '8': return @"1000"; 
     case '9': return @"1001"; 
     case 'a': 
     case 'A': return @"1010"; 
     case 'b': 
     case 'B': return @"1011"; 
     case 'c': 
     case 'C': return @"1100"; 
     case 'd': 
     case 'D': return @"1101"; 
     case 'e': 
     case 'E': return @"1110"; 
     case 'f': 
     case 'F': return @"1111"; 
    } 
    return @"-1"; //means something went wrong, shouldn't reach here! 
} 

Umut!

+0

Çalışıyor! Çok teşekkürler!!. Tuhaf görünüyor çünkü dosyam ikilide ve dönüştürmek zorundayım ama tamam. – Sergiodiaz53

+0

Sizin için mutlu :) Sorunu çözdüyseniz, bu cevabı kabul etmeyi unutmayın, bu yüzden doğru bir cevap olarak görünecektir. – antf

+0

G'den Z'ye ne dersiniz? – Supertecnoboff

İlgili konular