SORU
20 AĞUSTOS 2009, PERŞEMBE


En iyi şekilde hexadeximal bir dizeye bir bilimsel deneyler bazen büyük seri hale getirmek için

Güzel-kakao için onaltılık bir dizeye bilimsel deneyler bazen büyük bir nesne seri hale getirmek için arıyorum. Fikir benim sunucuya göndermeden önce deviceToken bildirimi için kullanılan seri hale getirmek için.

Aşağıdaki uygulama var, ama bunu yapmak için daha kısa ve daha iyi bir yolu olmalı düşünüyorum.

  (NSString*) serializeDeviceToken:(NSData*) deviceToken
{
    NSMutableString *str = [NSMutableString stringWithCapacity:64];
    int length = [deviceToken length];
    char *bytes = malloc(sizeof(char) * length);

    [deviceToken getBytes:bytes length:length];

    for (int i = 0; i < length; i  )
    {
    	[str appendFormat:@".2hhX", bytes[i]];
    }
    free(bytes);

    return str;
}

Sizin giriş için teşekkür ederiz.

thomas

CEVAP
31 Ocak 2012, Salı


Bu bir kategori yazdığım bilimsel deneyler bazen büyük uygulanır. Verileri herhangi bir uzunlukta olabilir onaltılık bir NSString ise bilimsel deneyler bazen büyük temsil verir. Eğer bilimsel deneyler bazen büyük boş ise boş bir dize döndürür.

Bilimsel Deneyler Bazen Büyük Dönüşüm.h

#import <Foundation/Foundation.h>

@interface NSData (NSData_Conversion)

#pragma mark - String Conversion
- (NSString *)hexadecimalString;

@end

Bilimsel Deneyler Bazen Büyük Dönüşüm.m

#import "NSData Conversion.h"

@implementation NSData (NSData_Conversion)

#pragma mark - String Conversion
- (NSString *)hexadecimalString {
    /* Returns hexadecimal string of NSData. Empty string if data is empty.   */

    const unsigned char *dataBuffer = (const unsigned char *)[self bytes];

    if (!dataBuffer)
        return [NSString string];

    NSUInteger          dataLength  = [self length];
    NSMutableString     *hexString  = [NSMutableString stringWithCapacity:(dataLength * 2)];

    for (int i = 0; i < dataLength;   i)
        [hexString appendString:[NSString stringWithFormat:@"lx", (unsigned long)dataBuffer[i]]];

    return [NSString stringWithString:hexString];
}

@end

Kullanımı:

NSData *someData = ...;
NSString *someDataHexadecimalString = [someData hexadecimalString];

Bu "muhtemelen" daha iyi [someData description] ve boşluk, < sıyırma;'s,^. 's. sonra çağırıyor Sıyırma karakterler çok "hissediyor". hacky Artı eğer Elma -description bilimsel deneyler bazen büyük biçimlendirme gelecekte değişeceğini asla bilemezsiniz.

NOT:İnsanlar bana ulaşmak bu yanıt kodu için lisans aldım. Bu vesileyle, kamuya açık kod ben bu cevap içinde yayınlanan telif hakkımı adamak.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Eric Magidson

    Eric Magidso

    4 Ocak 2009
  • We've moved!

    We've moved!

    7 Ocak 2008
  • ModNation Racers H.Q.

    ModNation Ra

    31 Ocak 2010