Conversion en hexadecimal

waldpest

Membre enregistré
14 Juillet 2009
4
0
Bonjour à tous,

Voila je développe actuellement un prog pour iphone et j'aurai besoin de savoir si il existe une fonction qui permet de convertion un NSString en hexadecimal?

Merci
 
Bonjour à tous,

Voila je développe actuellement un prog pour iphone et j'aurai besoin de savoir si il existe une fonction qui permet de convertion un NSString en hexadecimal?

Merci

Hop neuneu,

http://code.google.com/p/le-depotoir/source/browse/#svn/trunk/digest

Bloc de code:
char *cdb_bytes_to_hexa(unsigned char *hash_bytes, CC_LONG hash_byteslen, CC_LONG *hexa_byteslen)
{
    int i;
    char *buffer = NULL;
    char hex[3];
    
    if((buffer = malloc(hash_byteslen * 2 * sizeof(char) + 1))) {
        strcpy(buffer, "");    
        for (i = 0; i < hash_byteslen; ++i) {
            sprintf(hex, "%02x", (CC_LONG)hash_bytes[i]);
            strcat(buffer, hex);
        }
        if (NULL != hexa_byteslen) {
            *hexa_byteslen = hash_byteslen * 2;
        }
    }
    
    return buffer;
}
http://code.google.com/p/application-utility/source/browse/trunk/Sources/AUDataAdditionDigest.m

Bloc de code:
- (NSString *)hashWithDigest:(AUMessageDigest)digest data:(NSData **)data
{
    u_byte *(*CC_XXX)(const void *, CC_LONG, u_byte *);
    CC_LONG CC_XXX_DIGEST_LEN;
    u_byte *md = NULL;
    NSInteger i = 0;
    NSString *result;
    NSMutableString *buffer;
    
    switch (digest) {
        case AUDigestSHA1:
            CC_XXX = CC_SHA1;
            CC_XXX_DIGEST_LEN = CC_SHA1_DIGEST_LENGTH;
        break;
        case AUDigestSHA256:
            CC_XXX = CC_SHA256;
            CC_XXX_DIGEST_LEN = CC_SHA256_DIGEST_LENGTH;
        break;
        case AUDigestSHA512:
            CC_XXX = CC_SHA512;
            CC_XXX_DIGEST_LEN = CC_SHA512_DIGEST_LENGTH;
        break;
        case AUDigestMD5:
            CC_XXX = CC_MD5;
            CC_XXX_DIGEST_LEN = CC_MD5_DIGEST_LENGTH;
        break;
        default:
            return nil;
    }
    
    result = nil;
    if((md = malloc(CC_XXX_DIGEST_LEN * sizeof(u_byte) + 1))) {
        memset(md, 0, CC_XXX_DIGEST_LEN + 1);
        CC_XXX([self bytes], [self length], md);
        buffer = [NSMutableString string];
        for (i = 0; i< CC_XXX_DIGEST_LEN; i++) {
            [buffer appendFormat:@"%02x", (CC_LONG)(md[i])];
        }
        if (data != nil) {
            *data = [[NSData alloc] initWithBytesNoCopy:md length:CC_XXX_DIGEST_LEN freeWhenDone:YES];
        } else {
            free(md);
        }
        result = [NSString stringWithString:buffer];
    }
    return result;
}

et bien sur attention a l'unicode ...