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];

else

hexStr = [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;

}

时间: 2024-10-07 00:54:24

ios十进制、十六进制字符串,byte,data等之间的转换的相关文章

C# 16进制与字符串、字节数组之间的转换

1.请问c#中如何将十进制数的字符串转化成十六进制数的字符串 //十进制转二进制 Console.WriteLine("十进制166的二进制表示: "+Convert.ToString(166, 2)); //十进制转八进制 Console.WriteLine("十进制166的八进制表示: "+Convert.ToString(166, 8)); //十进制转十六进制 Console.WriteLine("十进制166的十六进制表示: "+Con

C# 16进制与字符串、字节数组之间的转换(转)

1.请问c#中如何将十进制数的字符串转化成十六进制数的字符串   //十进制转二进制 Console.WriteLine("十进制166的二进制表示: "+Convert.ToString(166, 2)); //十进制转八进制 Console.WriteLine("十进制166的八进制表示: "+Convert.ToString(166, 8)); //十进制转十六进制 Console.WriteLine("十进制166的十六进制表示: "+C

C#串口通讯,16进制与字符串、字节数组之间的转换。

1.将十进制数的字符串转化成十六进制数的字符串 //十进制转二进制Console.WriteLine("十进制166的二进制表示: "+Convert.ToString(166, 2));//十进制转八进制Console.WriteLine("十进制166的八进制表示: "+Convert.ToString(166, 8));//十进制转十六进制Console.WriteLine("十进制166的十六进制表示: "+Convert.ToStrin

Android Bitmap与DrawAble与byte[]与InputStream之间的转换工具类【转】

package com.soai.imdemo; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.InputStream; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.grap

在十六进制字符串与数值类型之间转换

1.获取‘字符串’中的每个字符的十六进制值. 2.获取与十六进制字符串中的每个值对应的字符.. 3.将十六进制string转换为整形. 4.将十六进制string转换为浮点型. 5.将字节数组转换为十六进制string. 此案例输入中的每个字符的是十六进制值.先将string分析为字符数组,然后对每个字符调用Inter32(char)以获取相应的数字值. static void Main(string[] args) { string input = "Hello World!"; c

C++字符串类型和数字之间的转换

转载:http://www.cnblogs.com/luxiaoxun/archive/2012/08/03/2621803.html 1.字符串数字之间的转换 字符串---字符数组(1)string --> char *   string str("OK");   char * p = str.c_str(); 字符数组---字符串(2)char * -->string   char *p = "OK";   string str(p); 字符数组--

字符串和字符数组之间的转换

package String; /* * 写了一个字符串和字符数组之间转换的例子 * 总结:将字符串转变为字符数组 :public char[] toCharArray() * 直接将一个字符数组变成一个字符串 public String (char[] value) 这个是构造函数啊,可以直接new 并为属性赋值啊. */ public class StringDemo2 { public static void main(String[] args) { String s = "hellow

JSON字符串和JS对象之间的转换

1 json字符串转换为js对象 1.1 标准json格式字符串转换为Js对象 JSON字符串 str JSON.parse(str) eval(str) eval('('+str+')') eval('['+str+']') 对象字符串 "{\"id\":\"001\",\"name\":\"sanzhang\"}" 对应的json格式 {"id":"001",&q

python常用的十进制、16进制、字符串、字节串之间的转换(长期更新帖)

进行协议解析时,总是会遇到各种各样的数据转换的问题,从二进制到十进制,从字节串到整数等等 废话不多上,直接上例子 整数之间的进制转换: 10进制转16进制: hex(16)  ==>  0x10 16进制转10进制: int('0x10', 16)  ==>  16 类似的还有oct(), bin() ------------------- 字符串转整数: 10进制字符串: int('10')  ==>  10 16进制字符串: int('10', 16)  ==>  16 16进