2011-08-25 11 views
7

मुझे हेक्स स्ट्रिंग को उद्देश्य-सी में बाइनरी रूप में परिवर्तित करने की आवश्यकता है, क्या कोई मुझे मार्गदर्शन कर सकता है? उदाहरण के लिए यदि मेरे पास हेक्स स्ट्रिंग 7fefff78 है, तो मैं इसे 1111111111011111111111101111000 में परिवर्तित करना चाहता हूं?हेक्स से बाइनरी आईफोन को कैसे परिवर्तित करें

बीआर, Suppi

+0

http://stackoverflow.com/questions/4618403/convert-binary-to-decimal-in-objective-c –

+2

की डुप्लीकेट मैं बहुत यकीन है कि एक विपरीत, नहीं डुप्लिकेट है हूँ। –

+0

@ करल: आप सही हैं। –

उत्तर

8

अच्छा पुनरावर्ती समाधान की शक्तियों हैं की सुंदरता ...

NSString *hex = @"49cf3e"; 
NSUInteger hexAsInt; 
[[NSScanner scannerWithString:hex] scanHexInt:&hexAsInt]; 
NSString *binary = [NSString stringWithFormat:@"%@", [self toBinary:hexAsInt]]; 

-(NSString *)toBinary:(NSUInteger)input 
{ 
    if (input == 1 || input == 0) 
     return [NSString stringWithFormat:@"%u", input]; 
    return [NSString stringWithFormat:@"%@%u", [self toBinary:input/2], input % 2]; 
} 
2

, बस एक एक करके प्रत्येक अंक एक कन्वर्ट: 0 -> 0000, 7 -> 0111, F -> 1111, आदि एक छोटी सी लुकअप तालिका यह बहुत ही संक्षिप्त बना सकता है।

संख्या अड्डों है कि एक और आधार :-)

+0

मैन्युअल रूपांतरण? कोड 16 मामलों को स्विच-स्टाइल स्टेटमेंट में? :) –

+1

@ जोनाथन: एक लुकअप टेबल स्विच स्टेटमेंट के बजाए खुद को सुझाएगी। –

+0

इस डुप्लिकेट के प्रश्न पर एक प्रोग्रामेटिक उत्तर है: http://stackoverflow.com/questions/4618403/convert-binary-to-decimal-in-objective-c। –

1

मामले आप अग्रणी शून्य की जरूरत है, उदाहरण के लिए 18 रिटर्न 00,011,000 बजाय 11000

-(NSString *)toBinary:(NSUInteger)input strLength:(int)length{ 
     if (input == 1 || input == 0){ 

     NSString *str=[NSString stringWithFormat:@"%u", input]; 
      return str; 
     } 
     else { 
      NSString *str=[NSString stringWithFormat:@"%@%u", [self toBinary:input/2 strLength:0], input % 2]; 
      if(length>0){ 
       int reqInt = length * 4; 
       for(int i= [str length];i < reqInt;i++){ 
        str=[NSString stringWithFormat:@"%@%@",@"0",str]; 
       } 
      } 
      return str; 
     } 
} 
NSString *hex = @"58"; 
NSUInteger hexAsInt; 
[[NSScanner scannerWithString:hex] scanHexInt:&hexAsInt]; 
NSString *binary = [NSString stringWithFormat:@"%@", [self toBinary:hexAsInt strLength:[hex length]]]; 
NSLog(@"binario %@",binary); 
0

मैं केरेक एसबी के उत्तर से सहमत हूं और इसकी कोशिश की। मेरे लिए यह काम।

+(NSString *)convertBinaryToHex:(NSString *) strBinary 
{ 
    NSString *strResult = @""; 
    NSDictionary *dictBinToHax = [[NSDictionary alloc] initWithObjectsAndKeys: 
            @"0",@"0000", 
            @"1",@"0001", 
            @"2",@"0010", 
            @"3",@"0011", 

            @"4",@"0100", 
            @"5",@"0101", 
            @"6",@"0110", 
            @"7",@"0111", 

            @"8",@"1000", 
            @"9",@"1001", 
            @"A",@"1010", 
            @"B",@"1011", 

            @"C",@"1100", 
            @"D",@"1101", 
            @"E",@"1110", 
            @"F",@"1111", nil]; 

    for (int i = 0;i < [strBinary length]; i+=4) 
    { 
     NSString *strBinaryKey = [strBinary substringWithRange: NSMakeRange(i, 4)]; 
     strResult = [NSString stringWithFormat:@"%@%@",strResult,[dictBinToHax valueForKey:strBinaryKey]]; 
    } 
    return strResult; 
} 
संबंधित मुद्दे

 संबंधित मुद्दे