iOS -- 十进制、十六进制字符串,byte,data等之间的转换
生活随笔
收集整理的這篇文章主要介紹了
iOS -- 十进制、十六进制字符串,byte,data等之间的转换
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
十進制->十六進制
Byte bytes[]={0xA6,0x27,0x0A};
NSString *strIdL = [NSStringstringWithFormat:@"%@",[[NSStringalloc]initWithFormat:@"%02lx",(long)bytes[0]]];
十六進制->十進制
NSString *rechargeInfo = @"0xff055008";
NSString *cardId2 = [rechargeInfosubstringWithRange:NSMakeRange(2,2)];
cardId2 = [NSStringstringWithFormat:@"%ld",strtoul([cardId2UTF8String],0,16)];NSString*str = @"0xff055008";//先以16為參數告訴strtoul字符串參數表示16進制數字,然后使用0x%X轉為數字類型
unsignedlongred= strtoul([str UTF8String],0,16);//strtoul如果傳入的字符開頭是“0x”,那么第三個參數是0,也是會轉為十六進制的,這樣寫也可以:
unsignedlongred= strtoul([@"0x6587"UTF8String],0,0);NSLog(@"轉換完的數字為:%lx",red);
#pragma mark --字符串處理方法
//字符串處理方法
+(NSString *)cutString:(NSString *)str{NSString *targetStr=nil;if (str.length>9) {targetStr=[str substringFromIndex:9];}return targetStr;
}
+(NSString *)transToStr:(NSData *)data{NSString *str=[NSStringstringWithFormat:@"%@",data];return str;
}//字符串補零操作
+(NSString *)addZero:(NSString *)str withLength:(int)length{NSString *string = nil;if (str.length==length) {return str;}if (str.length<length) {NSUInteger inter = length-str.length;for (int i=0;i< inter; i++) {string = [NSString stringWithFormat:@"0%@",str];str = string;}}return string;
}+(NSString *)stringFromHexString:(NSString *)hexString {//
char *myBuffer = (char *)malloc((int)[hexStringlength] / 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 = [[NSScanneralloc] initWithString:hexCharStr] ;[scanner scanHexInt:&anInt];myBuffer[i / 2] = (char)anInt;NSLog(@"myBuffer is %c",myBuffer[i /2] );}NSString *unicodeString = [NSStringstringWithCString:myBuffer encoding:4];NSLog(@"———字符串=======%@",unicodeString);return unicodeString;
}//10進制轉16進制
+(NSString *)ToHex:(longlong int)tmpid
{NSString *nLetterValue;NSString *str =@"";long longint ttmpig;for (int i =0; i<9; i++) {ttmpig=tmpid%16;tmpid=tmpid/16;switch (ttmpig){case 10:nLetterValue =@"A";break;case 11:nLetterValue =@"B";break;case 12:nLetterValue =@"C";break;case 13:nLetterValue =@"D";break;case 14:nLetterValue =@"E";break;case 15:nLetterValue =@"F";break;default:nLetterValue=[[NSStringalloc]initWithFormat:@"%lli",ttmpig];}str = [nLetterValue stringByAppendingString:str];if (tmpid == 0) {break;}}return str;
}//將16進制的字符串轉換成NSData
+ (NSMutableData *)convertHexStrToData:(NSString *)str {if (!str || [str length] == 0) {return nil;}NSMutableData *hexData = [[NSMutableDataalloc] initWithCapacity:8];NSRange range;if ([str length] %2 == 0) {range = NSMakeRange(0,2);} else {range = NSMakeRange(0,1);}for (NSInteger i = range.location; i < [strlength]; i += 2) {unsigned int anInt;NSString *hexCharStr = [str substringWithRange:range];NSScanner *scanner = [[NSScanneralloc] initWithString:hexCharStr];[scanner scanHexInt:&anInt];NSData *entity = [[NSDataalloc] initWithBytes:&anIntlength:1];[hexData appendData:entity];range.location += range.length;range.length = 2;}return hexData;
}+ (NSString *)convertDataToHexStr:(NSData *)data {if (!data || [data length] == 0) {return @"";}NSMutableString *string = [[NSMutableStringalloc] initWithCapacity:[datalength]];[data enumerateByteRangesUsingBlock:^(constvoid *bytes, NSRange byteRange,BOOL *stop) {unsigned char *dataBytes = (unsignedchar*)bytes;for (NSInteger i =0; i < byteRange.length; i++) {NSString *hexStr = [NSStringstringWithFormat:@"%x", (dataBytes[i]) &0xff];if ([hexStr length] == 2) {[string appendString:hexStr];} else {[string appendFormat:@"0%@", hexStr];}}}];return string;
}
//十進制準換為十六進制字符串
+ (NSString *)hexStringFromString:(NSString *)string{NSData *myD = [stringdataUsingEncoding:NSUTF8StringEncoding];Byte *bytes = (Byte *)[myDbytes];//下面是Byte轉換為16進制。NSString *hexStr=@"";for(int i=0;i<[myDlength];i++){NSString *newHexStr = [NSStringstringWithFormat:@"%x",bytes[i]&0xff];///16進制數if([newHexStr length]==1)hexStr = [NSString stringWithFormat:@"%@0%@",hexStr,newHexStr];elsehexStr = [NSString stringWithFormat:@"%@%@",hexStr,newHexStr]; } return hexStr;
}
+(NSString *) parseByteArray2HexString:(Byte[]) bytes
{NSMutableString *hexStr = [[NSMutableString alloc]init];int i = 0;if(bytes){while (bytes[i] != '\0'){NSString *hexByte = [NSString stringWithFormat:@"%x",bytes[i] & 0xff];///16進制數if([hexByte length]==1)[hexStr appendFormat:@"0%@", hexByte];else[hexStr appendFormat:@"%@", hexByte];i++;}}NSLog(@"bytes 的16進制數為:%@",hexStr);return hexStr;
}
?
轉載于:https://www.cnblogs.com/mafeng/p/6672168.html
總結
以上是生活随笔為你收集整理的iOS -- 十进制、十六进制字符串,byte,data等之间的转换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: RF内置库函数学习(一)
- 下一篇: 2017.4.5下午