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;
}
ios十进制、十六进制字符串,byte,data等之间的转换的更多相关文章
- 序列化之对象,字符串,byte数组,XML之间的转换(一)
工作一年多了,越来越感到自己不能这样一直下去,在最好的青春里面却已经死了.被时间消磨了意志,被工作杀死了精神.我想,我只要活着,我就要去不断的要求自己,不断的去追求更高的山峰. 放眼四周,有趣的灵魂越 ...
- C# 16进制与字符串、字节数组之间的转换(转)
1.请问c#中如何将十进制数的字符串转化成十六进制数的字符串 //十进制转二进制 Console.WriteLine("十进制166的二进制表示: "+Convert.ToSt ...
- C# 16进制与字符串、字节数组之间的转换 (转载)
1.请问c#中如何将十进制数的字符串转化成十六进制数的字符串 //十进制转二进制 Console.WriteLine(, )); //十进制转八进制 Console.WriteLine(, )); / ...
- C#串口通讯,16进制与字符串、字节数组之间的转换。
1.将十进制数的字符串转化成十六进制数的字符串 //十进制转二进制Console.WriteLine("十进制166的二进制表示: "+Convert.ToString(166, ...
- C# 16进制与字符串、字节数组之间的转换
1.请问c#中如何将十进制数的字符串转化成十六进制数的字符串//十进制转二进制 Console.WriteLine("十进制166的二进制表示: "+Convert.ToStrin ...
- C# 16进制与字符串、字节数组之间的转换(串口通讯中)
1.c#中如何将十进制数的字符串转化成十六进制数的字符串//十进制转二进制 Console.WriteLine("十进制166的二进制表示: "+Convert.ToString( ...
- 如何在Byte[]和String之间进行转换
源自C#与.NET程序员面试宝典. 如何在Byte[]和String之间进行转换? 比特(b):比特只有0 1,1代表有脉冲,0代表无脉冲.它是计算机物理内存保存的最基本单元. 字节(B):8个比特, ...
- Byte[]和BASE64之间的转换
一. BASE64编码 把byte[]中的元素当做无符号八位整数转换成只含有64个基本字符的字符串,这些基本字符是: l 大写的A-Z l 小写的a-z l 数字0-9 l '+' 和 '/' l 空 ...
- iOS全角符与半角符之间的转换
iOS全角符与半角符之间的转换 相关资料: 函数『CFStringTransform』中文 详情: 问题 1.17-03-15,「有人在群里边问怎么把『半角』符字符串转换成『全角』字符串?」,百度的 ...
- JSON字符串和JS对象之间的转换
JSON字符串和JS对象之间的转换 1 json字符串转换为js对象 1.1 标准json格式字符串转换为Js对象 JSON字符串 str JSON.parse(str) eval(str) eva ...
随机推荐
- [2015编程之美] 第一场C
题目3 : 质数相关 时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 两个数a和 b (a<b)被称为质数相关,是指a × p = b,这里p是一个质数.一个集合S被 ...
- iframe的使用小贴士
1.之前又说到“根据内容计算iframe的高度” 链接 2.现在想说的是,一般iframe页面都是嵌套在父页面当中,所以在一般在iframe里面做相关动作时默认都是iframe页面的,不会影响到父页面 ...
- Java这点事
1--代码片段: 1 2 3 4 5 byte b1=1,b2=2,b3,b6; final byte b4=4,b5=6; b6=b4+b5; b3=(b1+b2); System.out ...
- 我的Modbus Slave/Client开发历程(Rtu/AscII/Tcp)
我的Modbus Slave/Client开发历程(Rtu/AscII/Tcp) 分类: [自动化]2007-07-19 10:04 34038人阅读 评论(38) 收藏 举报 vb嵌入式dostcp ...
- 编写高效的C程序与C代码优化 via jobbole
http://blog.jobbole.com/82582/ 原文出处: codeproject 译文出处:CodingWu的博客 欢迎分享原创到伯乐头条
- HDU 3271-SNIBB(数位dp)
题意:给一个数q, q=1时求给定区间,给定进制,各数位和等于m的数字的个数 q=2时求给定区间,给定进制,各数位和等于m的数字中的第k大的数字 分析:dp[i][sum][j],表示长度为i当前数位 ...
- 使用asp.net MVC4中的Bundle遇到的问题及解决办法
背景 之前有过使用MVC3的经验,也建过MVC4的基本样例看过,知道有bundle这么一个方法. 近日想建个网站使用MVC4,但是我觉得在基本样例上改不好,有太多无用的东西,所以就建了一个空白的MVC ...
- Android 网络权限配置
Android开发应用程序时,如果应用程序需要访问网络权限,需要在 AndroidManifest.xml 中加入以下代码 <uses-permission android:name=”andr ...
- 2014-02-27WPF学习笔记
//StackPanel布局 //创建时间:11:33 页面布局:Orientation默认纵向:Vertical水平为:Horizontal <Button> <Button.Co ...
- 将COleDateTime类型数据转换成char *数据
用OpenCV做多摄像头校准时间,在图像上显示时间信息,需求要将COleDateTime类型数据转换成char *数据 具体代码如下: 1: COleDateTime m_checkDate; 2: ...