十进制->十六进制

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;

}

转载于:https://www.cnblogs.com/Free-Thinker/p/5899914.html

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

  1. 序列化之对象,字符串,byte数组,XML之间的转换(一)

    工作一年多了,越来越感到自己不能这样一直下去,在最好的青春里面却已经死了.被时间消磨了意志,被工作杀死了精神.我想,我只要活着,我就要去不断的要求自己,不断的去追求更高的山峰. 放眼四周,有趣的灵魂越 ...

  2. matlab二进制十进制十六进制和任意进制之间的转换

    >> a=bin2dec('1011001')   %将二进制转换为10进制 a = 89 >> b=dec2bin(22)  %将10进制转换为2进制 b = 10110 & ...

  3. java字符串与基本数据_java --字符串与基本数据类型之间的转换

    public static void main(String[] args) { /** * 1.字符串与基本数据类型之间的转换 * 字符串-->基本数据类型,调用xx.parseXxx(Str ...

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

    在串口通讯过程中,经常要用到 16进制与字符串.字节数组之间的转换 字符串转16进制字节数组  1         private static byte[] strToToHexByte(strin ...

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

    C++字符串类型和数字之间的转换 转载:http://www.cnblogs.com/luxiaoxun/archive/2012/08/03/2621803.html 1.字符串数字之间的转换 字符 ...

  6. android jni 将BYTE* 和 jbyteArray 之间的转换

     今天,简单讲讲如何在jni中将  BYTE* 转成 jbyteArray. 这个是我在做jni时碰到的问题.因为c传回的值是BYTE*,而返回给java代码是byte[],对应的jni的数据 ...

  7. 【java】字符串和基本数据类型之间的转换

    字符串和基本数据类型之间的转换:程序的功能是比较两个数的大小 代码清单如下: package p1; import javax.swing.JOptionPane;public class Java_ ...

  8. iOS -- 十进制、十六进制字符串,byte,data等之间的转换

    十进制->十六进制 Byte bytes[]={0xA6,0x27,0x0A}; NSString *strIdL = [NSStringstringWithFormat:@"%@&q ...

  9. Java byte[] 字节数组 转 二进制 八进制 十进制 十六进制字符串

    [前言] Java中很多时候需要将byte[]转为各种进制的字符串显示,从2,8,10,16到比较高级的base64(编码), 至于什么时候需要这样,当你遇到这样的问题就知道了. [代码] 进制转换比 ...

  10. C++控制不同进制输出(二进制,八进制,十进制,十六进制)各种进制之间的转换

    目录 1.输出(头文件讲解) 2.格式控制 常用的I/O流控制符 4.各种进制之间的转换(进制大乱斗) 4.1.写在前面 4.2整体框架搭建 4.3菜单函数 4.4用户输入选择(main函数体中) 4 ...

最新文章

  1. TricycleGAN:基于形状先验的无监督图像合成和分割
  2. Python实战案例,CV2模块,Python实现抖音字符视频
  3. 电脑桌面路径多了个计算机名,文件太多,电脑桌面太乱?一个技巧帮你解决!...
  4. nil slice 和 空 slice
  5. JS中令人发指的valueOf方法介绍
  6. C++笔记-const与mutable、static_cast与reinterpret_cast
  7. RedHat7 Git 安装使用
  8. livevent的几个问题
  9. 星际译王,金山词霸,有道词典,词库下载 1
  10. Verilog——38译码器(包括仿真文件和约束文件的格式)
  11. PX4 VTOL控制逻辑
  12. 电阻中联分压电路的计算
  13. 灵山奇缘服务器维护中,灵山奇缘跨服系统详细介绍
  14. DateTimePicker:jQuery日期和时间插件
  15. antD布局不能占满屏幕问题
  16. IDM产品安全机制说明
  17. [转]查看Zookeeper服务器状态信息的一些命令
  18. cordova-plugin-battery-status监听电池状态
  19. 三、队列:优先队列+循环队列(击鼓传花算法)
  20. 最AI 豆芽儿童机器人邀约图灵机器人创想未来

热门文章

  1. 23种设计模式(十)对象创建之构建器
  2. 遍历目录中的所有文件和目录,并生成全路径
  3. DOM基础操作(三)
  4. BZOJ1283 序列(费用流)
  5. SpringBoot | 第十二章:RabbitMQ的集成和使用
  6. Blender插件初始化范例
  7. CodeForces - 721E
  8. No bean named 'xxxxxxx' available--springboot 上线打war包
  9. 【锁】redis加锁的几种方法
  10. Web终端SSH功能