以半字节写入NSData

时间:2015-11-13 17:02:19

标签: ios hex nsdata

我需要给NSData写一个十六进制字符串,但是我得到一个额外的零附加到结尾,这引起了一些问题。有没有办法将半个字节写入NSData?

例如我正在转换100010002并且我得到100010002 0 (额外零)。

这是我用来将十六进制字符串转换为NSData的方法。感谢。

    + (NSData *)dataFromHexString:(NSString*)stringToConvert {
    const char *chars = [stringToConvert UTF8String];
    int i = 0;
    int len = (int)[stringToConvert length];
    
    NSMutableData *data = [NSMutableData dataWithCapacity:len / 2];
    char byteChars[3] = {'\0','\0','\0'};
    unsigned long wholeByte;
    
    while (i < len) {
        byteChars[0] = chars[i++];
        byteChars[1] = chars[i++];
        wholeByte = strtoul(byteChars, NULL, 16);
        [data appendBytes:&wholeByte length:1];
    }
    
    return data;
}

0 个答案:

没有答案