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

  • Jason Rosolowski

    Jason Rosolo

    25 EKİM 2006
  • RobertDuskin

    RobertDuskin

    12 HAZİRAN 2008
  • thepoke64738

    thepoke64738

    17 HAZİRAN 2011