美文网首页
原字符串,十六进制字符串转换

原字符串,十六进制字符串转换

作者: Lin__Chuan | 来源:发表于2018-03-06 15:52 被阅读122次
unsigned char CRC_8_compute (unsigned char * source, unsigned short length)
{
    unsigned char i, crc = 0;
    while(length--)
    {
        crc ^= *source++;
        for(i=0; i<8; i++)
        {
            if(crc & 0x01)
                crc = (unsigned char)((crc >> 1) ^ 0x8C);
            else
                crc >>= 1;
        }
    }
    return crc;
}
---------------------------------------------------------------------
// 十六进制字符串转换为普通字符串的。
+ (NSString *)stringFromHexString:(NSString *)hexString { //
    
    char *myBuffer = (char *)malloc((int)[hexString length] / 2 + 1);
    bzero(myBuffer, [hexString length] / 2 + 1);
    for (int i = 0; i < [hexString length] - 1; i += 2) {
        unsigned int anInt;
        NSString * hexCharStr = [hexString substringWithRange:NSMakeRange(i, 2)];
        NSScanner * scanner = [[NSScanner alloc] initWithString:hexCharStr];
        [scanner scanHexInt:&anInt];
        myBuffer[i / 2] = (char)anInt;
        NSLog(@"%s",myBuffer);
    }
    NSString *unicodeString = [NSString stringWithCString:myBuffer encoding:4];
    
    return unicodeString;
}

//普通字符串转换为十六进制字符串的。
+ (NSString *)hexStringFromString:(NSString *)string {
    NSData *myD = [string dataUsingEncoding:NSUTF8StringEncoding];
    Byte *bytes = (Byte *)[myD bytes];
    //下面是Byte 转换为16进制。
    NSString *hexStr=@"";
    for(int i=0;i<[myD length];i++){
        NSString *newHexStr = [NSString stringWithFormat:@"%x",bytes[i]&0xff];///16进制数
        
        if([newHexStr length]==1){
            hexStr = [NSString stringWithFormat:@"%@0%@",hexStr,newHexStr];
        }else{
            hexStr = [NSString stringWithFormat:@"%@%@",hexStr,newHexStr];
        }
    }
    return hexStr;   
}

// 普通字符串转byte数组
+(Byte *)byteFromString:(NSString *)string
{
    NSData *myD = [string dataUsingEncoding:NSUTF8StringEncoding];
    Byte *bytes = (Byte *)[myD bytes];
    return bytes;
}

//  返回CRC8校验值(NSInteger)
+(NSInteger)crc8StringFromData:(NSData *)src{
    
    Byte *srcByte = (Byte *)[src bytes];
    unsigned char distin = CRC_8_compute(srcByte, [src length]);
    
    return distin;
}

相关文章

网友评论

      本文标题:原字符串,十六进制字符串转换

      本文链接:https://www.haomeiwen.com/subject/jkcguttx.html