inline static NSData* encodeBCD(NSString *value){ //NSString *value = @"123456"; NSMutableData *vdata = [[NSMutableData alloc] init]; __uint8_t bytes[1] = {6}; [vdata appendBytes:&bytes length:1]; NSRange range; range.location = 0; range.length = 1; for (int i = 0; i < [value length];) { range.location = i; NSString *temp = [value substringWithRange:range]; int _intvalue1 = [temp intValue]; _intvalue1 = _intvalue1 << 4; range.location = i + 1; temp = [value substringWithRange:range]; int _intvalue2 = [temp intValue]; int intvalue = _intvalue1 | _intvalue2; bytes[0] = intvalue; [vdata appendBytes:&bytes length:1]; i += 2; } bytes[0] = 255; [vdata appendBytes:&bytes length:1]; bytes[0] = 255; [vdata appendBytes:&bytes length:1]; bytes[0] = 255; [vdata appendBytes:&bytes length:1]; bytes[0] = 255; [vdata appendBytes:&bytes length:1]; return [vdata autorelease]; }