簡體   English   中英

如何從NSString中刪除08十六進制字符

[英]How to remove 08 hexadecimal character from an NSString

我有一個長字符串,我想從中刪除一個特定的十六進制字符。

NSString * myString = @"longlongstringwithcharacters\"ofallsorts\"";

有什么建議么?

我追求的十六進制字符是08 ,它對應於退格鍵。 如何使用以下代碼代替它? 我不知道如何在字符串中表示08:

NSString *stringWithoutSpaces = [myString 
   stringByReplacingOccurrencesOfString:@" " withString:@""];

編輯:

我將嘗試澄清一些更多信息。

我試圖從作為有效載荷接收的字符串中刪除所有出現的與08十六進制相對應的字符。

有效載荷采用字符串格式,我嘗試使用Xcode調試器找出字符,並查看字符串的十六進制代碼,因為在嘗試將與字符串相對應的NSData隱式轉換為NSDictionary時,存在無效字符。

我不確定如何正確表達問題。

- (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;
}

試試這個代碼...這將幫助您將十六進制轉換為字符串

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

這段代碼對我有用:

    NSString * dataString = message.payloadString;
    NSString * wrongCharacter = [[NSString alloc] initWithFormat:@"%c", (char)0x08];
    dataString = [dataString stringByReplacingOccurrencesOfString:wrongCharacter withString:@""];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM