La conversion HEX NSString À NSData
Je suis en train de convertir un Hex NSString
à NSData
(je suis en utilisant le ci-dessous du code joint). Voici le résultat:
<00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000>
qui semble totalement hors de propos pour moi. Toute idée/suggestions sur l'endroit où sa va mal?
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);
- Si vous ne voulez pas passer de 16 à strtol?
Vous devez vous connecter pour publier un commentaire.
command
ont une même longueur, droit?Voici une autre méthode qui gère également les principaux
<
, de fuite>
et des espaces tels queCode:
Ceci est basé sur la réponse de @Nikunj R. Jadav
Ce serait peut-être plus utile, Apple a partagé un NSData catégorie.
NSData+HexString.m
Le code est:
malloc()
à ... n'est pas accessible après la ligne .... > retour [NSData dataWithBytesNoCopy:octets longueur:[hex longueur]/2 freeWhenDone:YES];Je vois plusieurs solutions ont été post seulement capable de convertir de la chaîne de même longueur.
Voici donc ma solution qui est également en mesure de revenir corriger les données si la chaîne est de longueur impaire, comme ce "DBA" est devenu données comme cela ce "\x0D\xBA"