iOS 蓝牙 字符串转byte转data

来源:互联网 发布:超级基因优化液贴吧 编辑:程序博客网 时间:2024/06/05 02:10

需求:字符串AD4532692D30AF836C75FA343ABC5A7E 转为16位的data :< af306769 2d30af83 6c75fa53 5abc9a3e >

原理 先转为byte 再转为data

第一种方法:

- (void)strToData{    NSString *strtest =@"AD4532692D30AF836C75FA343ABC5A7E";    //以及初始化的Byte数组    Byte bt[16] = {0};    for (int i =0; i < strtest.length; i+=2) {        NSString *strByte = [strtest substringWithRange:NSMakeRange(i,2)];        unsigned red = strtoul([strByte UTF8String],0,16);        Byte b =  (Byte) ((0xff & red) );//( Byte) 0xff&iByte;        bt[i/2+0] = b;    }    NSLog(@"%hhu",bt[0]);    NSData *adata3 = [[NSData alloc] initWithBytes:bt length:16];    NSLog(@"data 3 = %@",adata3);}

第二种方法

-(NSData*) strToDataWithString :(NSString *)te{    NSMutableData* data = [NSMutableData data];    int idx;    for (idx = 0; idx+2 <= te.length; idx+=2) {        NSRange range = NSMakeRange(idx, 2);        NSString* hexStr = [te substringWithRange:range];        NSScanner* scanner = [NSScanner scannerWithString:hexStr];        unsigned int intValue;        [scanner scanHexInt:&intValue];        [data appendBytes:&intValue length:1];    }    return data;}

笔记:ios 中Nsstirng,Nsdata,char,byte,UIImage 之间的转换

1.NSData 与 NSString

NSDate->NSString

NSString *testString =[[NSString alloc] initWithData:testData encoding:NSUTF8StringEncoding];  

NSString ->NSData

NSData *aData =[aString dataUsingEncoding:NSUTF8StringEncoding];  

2.NSData 与char

NSData->char*

char *test=(char*)[data bytes];  

char ->byte

for (int i=0;i<strlen(test);i++)  printf("%02X",test[i]&0xff);//16进制  

char*->NSData

byte *testData =malloc(sizeOf(byte)*16);  NSData *content =[NSData dataWithBytes:tempData length:16];  

3.byte与NSData

NSData->Byte数组

NSString *testString = @"1234567890";  NSData *testData = [testString dataUsingEncoding: NSUTF8StringEncoding];  Byte *testByte = (Byte*)[testData bytes];  forint i=0;i<[testDatalength];i++)  printf"testByte = %d ",testByte[i]); 

Byte数组-> NSData

Byte byte[] = {01234567891011121314151617181920212223};  NSData *adata = [[NSData alloc] initWithBytes:byte length:24]; 

Byte数组->16进制数

Byte *bytes = (Byte *)[aData bytes];  NSString *hexStr=@"";  forint i=0;i<[encryDatalength];i++)  {  NSString *newHexStr = [NSString stringWithFormat:@"%x",bytes[i]&0 xff]; ///16进制数  if([newHexStr length]==1)  hexStr = [NSString stringWithFormat:@"%@0%@",hexStr,newHexStr];  else  hexStr = [NSString stringWithFormat:@"%@%@",hexStr,newHexStr];  }  NSLog(@"bytes 的16进制数为:%@",hexStr);  

16进制数->Byte数组

///// 将16进制数据转化成Byte 数组  NSString *hexString = @"3e435fab9c34891f";//16进制字符串  int j=0;  Byte bytes[128];    ///3ds key的Byte数组, 128位  forint i=0;i<[hexString length];i++)  {  int int_ch;  /// 两位16进制数转化后的10进制数  unichar hex_char1 = [hexString characterAtIndex:i]; ////两位16进制数中的第一位(高位*16)  int int_ch1;  if(hex_char1 >= ""0"" &&hex_char1 <=""9"")  int_ch1 = (hex_char1-48)*16;   ////0 的Ascll - 48  else if(hex_char1 >= ""A"" &&hex_char1 <=""F"")  int_ch1 = (hex_char1-55)*16;//// A 的Ascll - 65  else  int_ch1 = (hex_char1-87)*16;//// a 的Ascll - 97  i++;  unichar hex_char2 = [hexString characterAtIndex:i]; ///两位16进制数中的第二位(低位)  int int_ch2;  if(hex_char2 >= ""0"" &&hex_char2 <=""9"")  int_ch2 = (hex_char2-48);//// 0 的Ascll - 48  else if(hex_char1 >= ""A"" &&hex_char1 <=""F"")  int_ch2 = hex_char2-55; //// A 的Ascll - 65  else  int_ch2 = hex_char2-87; //// a 的Ascll - 97  int_ch = int_ch1+int_ch2;  NSLog(@"int_ch=%d",int_ch);  bytes[j] = int_ch;  ///将转化后的数放入Byte数组里  j++;  }  NSData *newData = [[NSData alloc] initWithBytes:bytes length:128];  NSLog(@"newData=%@",newData); 

4.NSData 与UIImage
NSData ->UIImage

UIImage *testImage =[UIImage imageWithData:testImageData]; 

//从本地文件沙盒中取并转化为NSData

NSString *path =[[NSBundle mainBundle] bundlePath];  NSString *name =[NSString stringWithFormat:@"testImage.png"];  NSString *finalPath =[path stringByAppendingPathComponent:name];  NSData *imageData =[NSData dataWithContentFile:finalPath];  UIimage *testImage =[UIimage imageWithData:ImageData];  

UIImage->NSData

NSData *imageData =UIImagePNGRepresentation(testImage);  

参考来源:http://blog.csdn.net/wscqqlucy/article/details/8268412
http://www.th7.cn/Program/IOS/201505/450971.shtml

原创粉丝点击