iOS nslog 使用 十六进制输出

iOS nslog 使用 十六进制输出

1. 数据类型简介及输出



(1) 数据类型简介 


数据类型简介 : Object - C 数据类型 分为 基本数据类型, 构造类型 和 指针类型;

-- 基本数据类型 : 整型, 字符型, 浮点型 (float 和 double), 枚举型;

-- 构造类型 : 数组类型, 结构体类型, 共用体类型;

-- 指针类型 : 最终要的数据类型, 所有的系统类, 自定义类都是指针;

-- 空类型 : 空类型只有一个值 nil, 该类型没有名称, 因此没有空类型的变量, 变量不能转换成空类型, 但是空类型可以转换成任何引用类型;



(2) 数据类型输出


NSLog()简介 : NSLog 是 Foundation 框架中功能强大的函数, 可以输出任何类型的数据;

-- 占位符 : NSLog() 函数中各式与 C 语言中大致相似, 第一个参数是加了 @ 的字符串, 后面的参数是用于替换占位符的;


整型占位符说明 : 

-- %d : 十进制整数, 正数无符号, 负数有 "-" 符号;

-- %o : 八进制无符号整数, 没有 0 前缀;

-- %x : 十六进制无符号整数, 没有 0x 前缀;

-- %u : 十进制无符号整数;


字符占位符说明 : 

-- %c : 单个字符输出;

-- %s : 输出字符串;


浮点占位符说明 : 

-- %f : 以小数形式输出浮点数, 默认 6 位小数;

-- %e : 以指数形式输出浮点数, 默认 6 位小数;

-- %g : 自动选择 %e 或者 %f 各式;


其它形式占位符 :

-- %p : 输出十六进制形式的指针地址;

-- %@ : 输出 Object-C 对象;


占位符附加字符 : 

-- l : 在整型 和 浮点型占位符之前, %d %o %x %u %f %e %g 代表长整型 和 长字符串;

-- n(任意整数) : %8d 代表输出8位数字, 输出总位数;

-- .n : 浮点数 限制小数位数, %5.2f 表示 5位数字 2位小数, 字符串 截取字符个数;

-- : 字符左对齐;


示例代码 : 

[objc]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. #import <Foundation/Foundation.h>  
  2.   
  3. int main(int argc, charchar **argv)  
  4. {  
  5.     @autoreleasepool{  
  6.         int a = 38;  
  7.         long b = 38;  
  8.         double c = 3.8;  
  9.         double d = 2.3;  
  10.         charchar * oct_c = "Octopus";  
  11.         NSString *oct_oc = @"Octopus"/* 定义字符串, 在字符串前加上 @ 说明是Ovject-C变量, 值赋给一个 NSString 指针 */  
  12.         NSDate *date = [[NSDate alloc]init];  
  13.   
  14.         NSLog(@"%d 十进制整型", a);  
  15.         NSLog(@"%5d 五位十进制整型", a);  
  16.         NSLog(@"%-5d 左对齐的五位十进制整型", a);  
  17.         NSLog(@"%o 八进制整型", a);  
  18.         NSLog(@"%x 十六进制整型\n", a);  
  19.   
  20.         NSLog(@"%ld 长整型", b);  
  21.         NSLog(@"%lx 十六进制长整型\n", b);  
  22.           
  23.         NSLog(@"%f 小数形式输出浮点数", c);  
  24.         NSLog(@"%e 指数形式输出浮点数", c);  
  25.         NSLog(@"%g 以最简短形式输出浮点数", c);  
  26.         NSLog(@"%5f 以五位小数形式输出浮点数", c);  
  27.         NSLog(@"%5.3f 小数行书输出, 一共五位, 小数3位\n", c);  
  28.   
  29.         NSLog(@"%lf 小数形式输出长浮点数", d);  
  30.         NSLog(@"%le 指数形式输出长浮点数", d);  
  31.         NSLog(@"%lg 以最短形式输出长浮点数", d);  
  32.         NSLog(@"%5lf 5位小数形式输出长浮点数", d);  
  33.         NSLog(@"%5.3lf 5位小数形式输出长浮点数, 其中3位是小数\n", d);  
  34.   
  35.         NSLog(@"%s 输出C字符串", oct_c);  
  36.         NSLog(@"%@ 输出Object-C字符串\n", oct_oc);  
  37.   
  38.         NSLog(@"%@ 输出日期", date);  
  39.   
  40.   
  41.   
  42.     }  
  43. }  

执行结果 

[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. octopus-2:ios octopus$ clang -fobjc-arc -framework Foundation 02-NSLogDemo.m   
  2. octopus-2:ios octopus$   
  3. octopus-2:ios octopus$ ./a.out   
  4. 2014-08-16 19:32:44.210 a.out[1300:507] 38 十进制整型  
  5. 2014-08-16 19:32:44.212 a.out[1300:507]    38 五位十进制整型  
  6. 2014-08-16 19:32:44.213 a.out[1300:507] 38    左对齐的五位十进制整型  
  7. 2014-08-16 19:32:44.214 a.out[1300:507] 46 八进制整型  
  8. 2014-08-16 19:32:44.214 a.out[1300:507] 26 十六进制整型  
  9. 2014-08-16 19:32:44.215 a.out[1300:507] 38 长整型  
  10. 2014-08-16 19:32:44.215 a.out[1300:507] 26 十六进制长整型  
  11. 2014-08-16 19:32:44.216 a.out[1300:507] 3.800000 小数形式输出浮点数  
  12. 2014-08-16 19:32:44.216 a.out[1300:507] 3.800000e+00 指数形式输出浮点数  
  13. 2014-08-16 19:32:44.217 a.out[1300:507] 3.8 以最简短形式输出浮点数  
  14. 2014-08-16 19:32:44.217 a.out[1300:507] 3.800000 以五位小数形式输出浮点数  
  15. 2014-08-16 19:32:44.218 a.out[1300:507] 3.800 小数行书输出, 一共五位, 小数3位  
  16. 2014-08-16 19:32:44.218 a.out[1300:507] 2.300000 小数形式输出长浮点数  
  17. 2014-08-16 19:32:44.219 a.out[1300:507] 2.300000e+00 指数形式输出长浮点数  
  18. 2014-08-16 19:32:44.219 a.out[1300:507] 2.3 以最短形式输出长浮点数  
  19. 2014-08-16 19:32:44.219 a.out[1300:507] 2.300000 5位小数形式输出长浮点数  
  20. 2014-08-16 19:32:44.220 a.out[1300:507] 2.300 5位小数形式输出长浮点数, 其中3位是小数  
  21. 2014-08-16 19:32:44.220 a.out[1300:507] Octopus 输出C字符串  
  22. 2014-08-16 19:32:44.220 a.out[1300:507] Octopus 输出Object-C字符串  
  23. 2014-08-16 19:32:44.226 a.out[1300:507] 2014-08-16 11:32:44 +0000 输出日期  


2. 整型



(1) 整型类型介绍


四种整型 

-- short int : 短整型, 占16位, mac 上占 2 字节, ios 上占 2 字节, 范围 -32768(-2^15) ~ 32767(2^15 - 1), 3万;

-- int : 整型, 占32位, mac 上占 4 字节, ios 上占 4 字节, 范围 -2147483648(-2^31) ~ 2147483647(2^31 - 1), 21亿;

-- long int : 长整型, 占64位, mac 上占 8 字节, ios 上占 4 字节, (-2^63) ~ (2^63 - 1), 922亿亿;

-- long long : 占64位, mac 上占 8 字节, ios 上占 8 字节;


整数赋值 : 整型赋值时注意范围, 如果超出赋值范围, 会出现警告, 数据也会丢失;

-- 示例程序 : 

[objc]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. /************************************************************************* 
  2.     > File Name: a.m 
  3.     > Author: octopus 
  4.     > Mail: octopus_truth.163.com  
  5.     > Created Time: 日  8/17 00:44:19 2014 
  6.  ************************************************************************/  
  7.   
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Objective-C中,可以通过NSData和NSString类提供的方法进行Byte数组和十六进制字符串的互转操作。 1. Byte数组转十六进制字符串: ``` // 定义一个Byte数组 Byte bytes[] = {0x12, 0x34, 0x56, 0x78}; // 将Byte数组转为NSData对象 NSData *data = [[NSData alloc] initWithBytes:bytes length:4]; // 使用NSData对象提供的方法将Byte数组转为十六进制字符串 NSString *hexString = [data description]; hexString = [hexString stringByReplacingOccurrencesOfString:@" " withString:@""]; hexString = [hexString stringByReplacingOccurrencesOfString:@"<" withString:@""]; hexString = [hexString stringByReplacingOccurrencesOfString:@">" withString:@""]; NSLog(@"hexString = %@", hexString); // 输出结果:hexString = 12345678 ``` 2. 十六进制字符串转Byte数组: ``` // 定义一个十六进制字符串 NSString *hexString = @"12345678"; // 将十六进制字符串转为NSData对象 NSMutableData *data = [[NSMutableData alloc] init]; unsigned char whole_byte; char byte_chars[3] = {'\0','\0','\0'}; for (int i=0; i<[hexString length]/2; i++) { byte_chars[0] = [hexString characterAtIndex:i*2]; byte_chars[1] = [hexString characterAtIndex:i*2+1]; whole_byte = strtol(byte_chars, NULL, 16); [data appendBytes:&whole_byte length:1]; } // 将NSData对象转为Byte数组 Byte *bytes = (Byte *)[data bytes]; for (int i=0; i<[data length]; i++) { NSLog(@"bytes[%d] = %x", i, bytes[i]); // 输出结果:bytes[0] = 12、bytes[1] = 34、bytes[2] = 56、bytes[3] = 78 } ``` 需要注意的是,使用NSData的description方法将Byte数组转为十六进制字符串时,输出结果的格式为“<12 34 56 78>”,需要使用NSString的stringByReplacingOccurrencesOfString方法去掉空格和尖括号。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值