Object-C 从字符串中取16进制数到byte数组
来源:互联网 发布:elasticsearch 5.0 sql 编辑:程序博客网 时间:2024/06/10 19:35
-
- -(NSData*)stringToByte:(NSString*)string
- {
- NSString *hexString=[[string uppercaseString] stringByReplacingOccurrencesOfString:@" " withString:@""];
- if ([hexString length]%2!=0) {
- return nil;
- }
- Byte tempbyt[1]={0};
- NSMutableData* bytes=[NSMutableData data];
- for(int i=0;i<[hexString length];i++)
- {
- unichar hex_char1 = [hexString characterAtIndex:i];
- int int_ch1;
- if(hex_char1 >= '0' && hex_char1 <='9')
- int_ch1 = (hex_char1-48)*16;
- else if(hex_char1 >= 'A' && hex_char1 <='F')
- int_ch1 = (hex_char1-55)*16;
- else
- return nil;
- i++;
-
- unichar hex_char2 = [hexString characterAtIndex:i];
- int int_ch2;
- if(hex_char2 >= '0' && hex_char2 <='9')
- int_ch2 = (hex_char2-48);
- else if(hex_char2 >= 'A' && hex_char2 <='F')
- int_ch2 = hex_char2-55;
- else
- return nil;
-
- tempbyt[0] = int_ch1+int_ch2;
- [bytes appendBytes:tempbyt length:1];
- }
- return bytes;
- }