कनवर्ट करना मैं हेक्स NSString
से NSData
(मैं नीचे दिए गए कोड का उपयोग कर रहा हूं) को परिवर्तित करने की कोशिश कर रहा हूं। निम्नलिखित आउटपुट है:एचएक्स एनएसएसटींग को एनएसडीटा
<00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000>
जो मेरे लिए पूरी तरह से अप्रासंगिक दिखता है। किसी भी विचार/सुझाव जहां यह गलत हो रहा है?
+ (NSData *)dataFromHexString:(NSString *)string
{
string = [string lowercaseString];
NSMutableData *data= [NSMutableData new];
unsigned char whole_byte;
char byte_chars[3] = {'\0','\0','\0'};
int i = 0;
int length = string.length;
while (i < length-1) {
char c = [string characterAtIndex:i++];
if (c < '0' || (c > '9' && c < 'a') || c > 'f')
continue;
byte_chars[0] = c;
byte_chars[1] = [string characterAtIndex:i++];
whole_byte = strtol(byte_chars, NULL, 16);
[data appendBytes:&whole_byte length:1];
}
return data;
}
यह द्वारा जवाब पर आधारित है:
NSString *strData = @"72ff63cea198b3edba8f7e0c23acc345050187a0cde5a9872cbab091ab73e553";
NSLog(@"string Data length is %d",[strData length]);
NSMutableData *commandToSend= [[NSMutableData alloc] init];
unsigned char whole_byte;
char byte_chars[2];
int i;
for (i=0; i < [strData length]/2; i++) {
byte_chars[0] = [strData characterAtIndex:i*2];
byte_chars[1] = [strData characterAtIndex:i*2+1];
whole_byte = strtol(byte_chars, NULL, [strData length]);
[commandToSend appendBytes:&whole_byte length:1];
}
NSLog(@"%@", commandToSend);
की तरह डेटा आप नहीं होना चाहिए strtol करने के लिए 16 पास? –