"Merhaba" anlamına gelen "68656C6C6F" gibi altıgen bir dizeyle NSString var.HEX-NSString Objective-C nasıl dönüştürülür?
Şimdi altıgen dizeyi "merhaba" gösteren başka bir NSString nesnesine dönüştürmek istiyorum. Bu nasıl yapılır ?
"Merhaba" anlamına gelen "68656C6C6F" gibi altıgen bir dizeyle NSString var.HEX-NSString Objective-C nasıl dönüştürülür?
Şimdi altıgen dizeyi "merhaba" gösteren başka bir NSString nesnesine dönüştürmek istiyorum. Bu nasıl yapılır ?
Bunu yapmak için çok daha iyi ve akıllı yollar olduğundan eminim, ancak bu çözüm gerçekten işe yarıyor.
NSString * str = @"68656C6C6F";
NSMutableString * newString = [[[NSMutableString alloc] init] autorelease];
int i = 0;
while (i < [str length])
{
NSString * hexChar = [str substringWithRange: NSMakeRange(i, 2)];
int value = 0;
sscanf([hexChar cStringUsingEncoding:NSASCIIStringEncoding], "%x", &value);
[newString appendFormat:@"%c", (char)value];
i+=2;
}
+(NSString*)intToHexString:(NSInteger)value
{
return [[NSString alloc] initWithFormat:@"%lX", value];
}
"68656C6C6F" parametresini argüman değerine mi girmeliyim? Ayrıca çözümün doğru olmadığını düşünüyorum. – user403015
Sadece bu doğru değil, aynı zamanda sahiplik kuralını bozuyor. Mutlu hata ayıklama/sızıntı sabitleme. – JustSid
Bence bu en iyi cevaptır, daha fazla örnek kod ekledim – dancl
Bu yapmalıyım:
- (NSString *)stringFromHexString:(NSString *)hexString {
// The hex codes should all be two characters.
if (([hexString length] % 2) != 0)
return nil;
NSMutableString *string = [NSMutableString string];
for (NSInteger i = 0; i < [hexString length]; i += 2) {
NSString *hex = [hexString substringWithRange:NSMakeRange(i, 2)];
NSInteger decimalValue = 0;
sscanf([hex UTF8String], "%x", &decimalValue);
[string appendFormat:@"%c", decimalValue];
}
return string;
}
[hex UTF8String], altıgen ise [hex cStringUsingEncoding: NSASCIIStringEncoding] olmalıdır ASCII – valexa
örnek kod rağmen (.. insanlar oldukça objc, C karışımı daha objektif-C var olarak initWithFormat iyi cevaptır danışmanlık düşünüyorum bir bit ...) Aşağıdaki açıklamaları yaptım:
unsigned int resInit = 0x1013;
if (0 != resInit)
{
NSString *s = [[NSString alloc] initWithFormat:@"Error code 0x%lX", resInit];
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Initialised failed"
message:s
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
[alert release];
[s release];
}
Netleştirmek için, hex dizgisi bir NSString veya bir tamsayıdır? Bazı cevaplayıcıların bunun hakkında kafasının karışmış olabileceğini düşünüyorum. – nil
Onaltılık dize bir NSString'dir ve ben onu "merhaba" temsil eden başka bir NSString'e dönüştürmek istiyorum – user403015
Eh, sorunuzu bu bilgilerle güncelleyin, böylece kimse aynı hatayı tekrar yapmaz. – nil