谁能告诉我这个功能有什么影响?

时间:2015-08-14 09:40:40

标签: ios

第一种方法是:

-(NSData *)stringToAddBytes:(NSString*)addString
{
    int length = (int)[addString length];
    if(length < 2)
    {
        return nil;
    }
    Byte buf[length / 2];
    for(int i = 0 ;i < length/2 ;i++)
    {
        NSString *str = [addString substringWithRange:NSMakeRange(i * 2, 2)];
        Byte b = [self hexStringToByte:str];
        buf[i]=b;
    }

    NSData * myD = [[NSData alloc]initWithBytes:buf length:length/2];
    return myD;
}

第一种方法叫做的方法。

-(Byte)hexStringToByte:(NSString*)str
{
    NSArray *charArray = [[NSArray alloc]initWithObjects:@"0",@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",
                          @"A",@"B",@"C",@"D",@"E",@"F",nil];
    NSString *str1 = [str substringWithRange:NSMakeRange(0, 1)];
    int num1 = (int)[charArray indexOfObject:str1];
    NSString *str2 = [str substringWithRange:NSMakeRange(1, 1)];
    int num2 = (int)[charArray indexOfObject:str2];

    Byte b = num1*16+num2;
    return b;
}

感谢您的回答。看起来将大字符更改为小字符。

1 个答案:

答案 0 :(得分:2)

hexStringToByte:将使用十六进制数字表示形式的字符串(例如@&#34; FF&#34;)转换为Byte值(在此示例中为255)。

stringToAddBytes:使用hexStringToByte:创建NSData字节,将addString分为两个字母,并将其转换为Byte值。

换句话说,这是字符串序列化。

示例:

// 255 = 0xFF
// 170 = 0xAA
// 136 = 0x88
NSString* addString = @"FFAA88";
NSData* data = [self stringToAddBytes:addString];
// data will be [255, 170, 136]

请注意NSData不是数组,而是表示原始对象。