zoukankan      html  css  js  c++  java
  • 字符串或者int转十六进制

    //开始传输config文件
    -(void)Qlife_sendConfigStart:(NSString *)fileData{
        //读取文件
        NSError *error = nil;
        NSString *str = [NSString stringWithContentsOfFile:fileData encoding:NSUTF8StringEncoding error:&error];
        if (error != nil) {
            NSLog(@"读取文件:%@", [error localizedDescription]);//将错误信息输出来
        }
        else{
            NSLog(@"读取文件:%@",str);
        }
        NSString *config;
        //1. 去除掉首尾的空白字符和换行字符
        config = [str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
        //2. 去除掉其它位置的空白字符和换行字符
        config = [config stringByReplacingOccurrencesOfString:@"
    " withString:@""];
        config = [config stringByReplacingOccurrencesOfString:@"
    " withString:@""];
        config = [config stringByReplacingOccurrencesOfString:@"	" withString:@""];
        config = [config stringByReplacingOccurrencesOfString:@" " withString:@""];// s也是去空格
    //    NSLog(@"config:%@",config);
        //    截取字符串
        NSString  *character1=[config substringWithRange:NSMakeRange(0,2)];
        NSString  *character2=[config substringWithRange:NSMakeRange(2,2)];
        NSString  *character3=[config substringWithRange:NSMakeRange(4,2)];
        NSString  *character4=[config substringWithRange:NSMakeRange(6,2)];
        NSString  *character5=[config substringWithRange:NSMakeRange(8,2)];
        NSString  *character6=[config substringWithRange:NSMakeRange(10,2)];
        NSString  *character7=[config substringWithRange:NSMakeRange(12,2)];
        NSString  *character8=[config substringWithRange:NSMakeRange(14,2)];
        
        //    //先以16为参数告诉strtoul字符串参数表示16进制数字,然后使用0x%X转为数字类型
        //    unsigned long red = strtoul([b UTF8String],0,16);
        //    //strtoul如果传入的字符开头是“0x”,那么第三个参数是0,也是会转为十六进制的,这样写也可以:
        //    unsigned long red = strtoul([@"0x6587" UTF8String],0,0);
    
        //    先以16为参数告诉strtoul字符串参数表示16进制数字,然后使用0x%X转为数字类型
        unsigned long supplement1 = strtoul([character1 UTF8String],0,16);
        unsigned long supplement2 = strtoul([character2 UTF8String],0,16);
        unsigned long supplement3 = strtoul([character3 UTF8String],0,16);
        unsigned long supplement4 = strtoul([character4 UTF8String],0,16);
        unsigned long supplement5 = strtoul([character5 UTF8String],0,16);
        unsigned long supplement6 = strtoul([character6 UTF8String],0,16);
        unsigned long supplement7 = strtoul([character7 UTF8String],0,16);
        unsigned long supplement8 = strtoul([character8 UTF8String],0,16);
        
        int i = 0;
        char dataArr[14] = {0x00};
        dataArr[i++] = 0x55;
        dataArr[i++] = 0xAA;
        dataArr[i++] = 0x0E;
        dataArr[i++] = 0x72;
        dataArr[i++] = supplement4;
        dataArr[i++] = supplement3;
        dataArr[i++] = supplement2;
        dataArr[i++] = supplement1;
        dataArr[i++] = supplement8;
        dataArr[i++] = supplement7;
        dataArr[i++] = supplement6;
        dataArr[i++] = supplement5;
    //        dataArr[i++] = 0x55;
    //        dataArr[i++] = 0xAA;
    //        dataArr[i++] = 0x0E;
    //        dataArr[i++] = 0x72;
    //        dataArr[i++] = 0x7E;
    //        dataArr[i++] = 0xFF;
    //        dataArr[i++] = 0x7F;
    //        dataArr[i++] = 0xFF;
    //        dataArr[i++] = 0x00;
    //        dataArr[i++] = 0xDC;
    //        dataArr[i++] = 0x00;
    //        dataArr[i++] = 0x00;
        //发送数据校验
        uint asrsum=0;
        for (int j=0; j<12;j++) {
            asrsum+=(dataArr[j]&0xff);//求数组值之和
        }
        char high=asrsum>>8;//当brightsum=[0,65025]时,当brightsum=[0x00,0xff*0xff]时
        char low=asrsum&0xff;//当brightsum=[0,65025]时,当brightsum=[0x00,0xff*0xff]时
        dataArr[i++] = high;
        dataArr[i++] = low;
        NSData *data_config = [NSData dataWithBytes:dataArr length:14];
    //    NSLog(@"data_config:%@",data_config);
        _busy = YES;
        [self senddata:data_config];
    }
  • 相关阅读:
    如何创建一个基于 .NET Core 3 的 WPF 项目
    阅读源码系列
    近期计划
    Redis 源码走读(二)对象系统
    Redis 源码走读(一)事件驱动机制与命令处理
    basic paxos解析
    ThreadLocal深度解析
    MySQL InnoDB MVCC深度分析
    java泛型详解
    内存可见性,指令重排序,JIT。。。。。。从一个知乎问题谈起
  • 原文地址:https://www.cnblogs.com/gaozhang12345/p/8392431.html
Copyright © 2011-2022 走看看