首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何将十六进制的NSData转换成十进制的NSData?

将十六进制的NSData转换成十进制的NSData可以通过以下步骤实现:

  1. 首先,将十六进制的NSData转换成十六进制字符串。可以使用NSData的description方法将NSData对象转换成十六进制字符串表示形式。
  2. 接下来,将十六进制字符串转换成十进制数值。可以使用NSString的intValue或者integerValue方法将十六进制字符串转换成十进制整数。
  3. 最后,将十进制整数转换成NSData对象。可以使用NSNumber的numberWithInt:方法将十进制整数转换成NSNumber对象,然后使用NSNumber的unsignedCharValue方法获取无符号字符值,最后使用NSData的dataWithBytes:length:方法将无符号字符值转换成NSData对象。

以下是一个示例代码,演示了如何将十六进制的NSData转换成十进制的NSData:

代码语言:txt
复制
NSData *hexData = [NSData dataWithBytes:"0123456789ABCDEF" length:16]; // 十六进制的NSData
NSString *hexString = [hexData description]; // 十六进制字符串
hexString = [hexString stringByReplacingOccurrencesOfString:@" " withString:@""]; // 去除空格
hexString = [hexString stringByReplacingOccurrencesOfString:@"<" withString:@""];
hexString = [hexString stringByReplacingOccurrencesOfString:@">" withString:@""];
unsigned int decimalValue = (unsigned int)strtoul([hexString UTF8String], NULL, 16); // 十六进制字符串转换成十进制整数
NSNumber *decimalNumber = [NSNumber numberWithUnsignedInt:decimalValue]; // 十进制整数转换成NSNumber对象
unsigned char decimalChar = [decimalNumber unsignedCharValue]; // 获取无符号字符值
NSData *decimalData = [NSData dataWithBytes:&decimalChar length:sizeof(decimalChar)]; // 无符号字符值转换成NSData对象

这样,你就可以将十六进制的NSData转换成十进制的NSData了。请注意,以上示例代码仅供参考,实际应用中可能需要根据具体情况进行适当调整。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • iOS Bluetooth 打印小票(一)

    这里有篇文章,有几个常用指令对比: 这是地址 我就只记录一种命令集:ESC/POS打印命令集。而一般打印机支持三种格式:ASCII、十进制十六进制。...这里有一份PDF文件说明了各个命令作用和对应三种格式:地址 打印命令一览表 表中都是用ASCII码格式,不要急,下面会介绍每一个命令十进制十六进制格式和说明。 ?...对齐方式设置.png 说明: 对齐方式有两种,对应十六进制 {0x1B,0x61,0x00}、{0x1B,0x61,0x01}、{0x1B,0x61,0x02} 或者 {0x1B,0x61,0x30...其他 这里有其他简友伊布林提供另一份打印机指令集文档地址: 打印机指令集文档 这里有我最初用最原始指令集拼接出来NSData代码片段,供大家参考: // 打印机支持文字编码...//居左 Byte leftBytes[] = {0x1B,0x61,0}; NSData *leftdata= [NSData dataWithBytes

    1.7K30

    NSData使用与分析

    )+1];//创建不可变字节对象 NSLog(@"不可变data1字节是:%@",data1);//输出十六进制ASCII编码,当然要加上最后字符串结尾符号,所以长度要加一...NSData *data2=[NSData dataWithBytes:str2 length:strlen(str2)+1];//用于追加到可变Gmdata中间对象...67210041 20432073 7472696e 672100> Program ended with exit code: 0 结果说明:输出data对象实际上是ASCII码组合,每两个十六进制数字代表一个字母或者其他...ASCII字符ASCII值,计算出 x41输出开头可以看出AASCII码是65对应十六进制是41,空格则是x20,十进制ASCII是32!...strlen(str)+1是因为字符串最后结尾符并未被计算成字符所以得加上一,’\0’ASCII是00; NSMutableData是NSData子类

    60100

    iOS蓝牙开发如何更好地收发数据

    好了,经过上面的一系列稍显繁琐步骤,我们从蓝牙那边拿到了「NSData?」类型(Objective-C对应是「NSData」类型)数据。 我们打印一个「NSData?」...这要从NSData说起,NSData是怎么样数据呢?要经过怎么处理,才能变成我们自己需要数据呢?...莫生气,只是用十六进制呈现给我们而已,也就是0xda、0x13、0xff、0xff、0xff、0x64、0x00、0x99,蓝牙传了这8个十六进制数(8个byte...「阿尔法狗」倒应该是很乐意。 正因为二进制与十六进制之间转换比较简单,所以在计算机领域,16进制比较通用。...这就解释了为什么我们打印出来NSData对象最终以十六进制方式呈现(上面才仅仅是8个byte0和1。1KB=1024Bytes,给你0.5KB0和1,十副老花镜都看不过来)。

    2.8K32

    一文学会iOS蓝牙开发

    然后可以先获取到对应data,再转为十六进制hex string,再通过固定规则取到Mac地址,然后根据Mac地址确定要链接蓝牙设备。...Data转16进制字符串 蓝牙返回数据是 NSData 类型,此时可以调用下面方法将 NSData 转为 16进制字符串,然后针对字符串取指定位进行处理。...NSString *hexStr = [NSString stringWithFormat:@"%02lx", (long)number]; 16进制字符串转十进制数字,用于需要进行算术运算情况,需要先将字符串转为十进制数字...Ps: **在这里转换时需要注意,如果算术运算后数字小于0时,直接把十进制数字通过上面方法转16进制字符串再去异或会有问题。...Ps:这里最好也先将字符串转为大写,再转为 Data // 将16进制字符串转为NSData, 传入字符串转为128位字符,不足位补数字,如果需要对应位,截取位置即可。

    1.7K20

    iOS开发中上传JSON字符串到后台服务器

    在上传JSON字符串之前首先需要获取JSON字符串,JSON字符串其实也是由OC中某个对象转换过来。...转换思路:将某个对象先通过NSJSONSerialization转换成NSData对象,然后将这个NSData对象转换成字符串,这样得到字符串就是JSON字符串。(是不是很简单!)...ObjectToJsonString:(id)object{ NSString *jsonString = [[NSString alloc]init]; NSError *error; NSData...字符串大多数并不能满足我们需要(和后台给出JSON字符串形式不同),上面的这个JSON字符串中会有空格、换行符、反斜杠,这些特殊字符串都是我们不需要,因此我们还需要对JSON字符串中进行处理(去掉那些我们不需要字符...]init]; NSError *error; NSData *jsonData = [NSJSONSerialization dataWithJSONObject:object options

    1.6K10

    数据安全及各种加密算法对比

    Base64编码 // 要编码字符串 NSString *str = @"haha"; // 转换成二进制文件 NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding...dataStr = [data base64EncodedStringWithOptions:kNilOptions]; NSLog(@"%@", dataStr); Base64解码 // 先对数据进行解码 NSData...*encData = [[NSData alloc]initWithBase64EncodedString:dataStr options:kNilOptions]; // 将二进制数据转换成字符串...Base64编码原理 将所有字符串转换成ASCII码 将ASCII码转换成8位二进制 将二进制三位归成一组(不足三位在后边补0),再按每组6位,拆成若干组 统一在6位二进制后不足8位补0 将补0后二进制转换成十进制...从Base64编码表取出十进制对应Base64编码 若原数据长度不是3倍数时且剩下1个输入数据,则在编码结果后加2个=;若剩下2个输入数据,则在编码结果后加1个= 如上面的例子: 原数据为A,数据长度为

    2.5K30

    二进制、八进制、十进制十六进制之间转换

    大家好,又见面了,我是你们朋友全栈君。 我们常用进制包括:二进制、八进制、十进制十六进制,它们之间区别在于数运算时是逢几进一位。...比如二进制是逢2进一位,十进制也就是我们常用0-9是逢10进一位。今天我们就来讨论一下进制之间转换。...二进制和十进制转换 十进制转二进制 十进制数除2取余法,即十进制数除2,余数为权位上数,得到商值继续除2,依此步骤继续向下运算直到商为0为止。...我们最熟悉就是二进制和十进制之间转换,当二进制和八进制,十六进制进行转换时,之前我们常用是先转换成十进制,再进行相应转换,今天我们又学习了一种新方法。...当十进制和八进制、十六进制进行转换时,一种思路就是先将八进制或十六进制转换成二进制,再与十进制进行转换,另外一种方法就是把十进制转八进制或者十六进制按照除8或者16取余,直到商为0为止 发布者:全栈程序员栈长

    45020
    领券