0

为什么当我尝试将其转换时将十六进制值转换为整数?

unsigned int outVal;
NSScanner* scanner = [NSScanner scannerWithString:final1];
[scanner scanHexInt:&outVal];
NSLog(@"%u",outVal);

我尝试做的另一种方法是将它转换为普通整数,它给我0值。我只想要相同的字符:

int16_t a=0x401A;

我从用户那里得到这个号码,所以没有控制权自己定义它。我想删除引号和数据类型int16_t以便我可以执行命令。

4

1 回答 1

0

我自己得到了解决方案

首先是将数据转换为字节的函数

    - (NSData *)dataWithString:(NSString *)hexstring
{
    NSMutableData* data = [NSMutableData data];
    int idx;
    for (idx = 0; idx+2 <= hexstring.length; idx+=2) {
        NSRange range = NSMakeRange(idx, 2);
        NSString* hexStr = [hexstring substringWithRange:range];
        NSScanner* scanner = [NSScanner scannerWithString:hexStr];
        unsigned int intValue;
        [scanner scanHexInt:&intValue];
        [data appendBytes:&intValue length:1];
    }
    return data;
}

并通过在将发送到 BLE 的命令中提供参数来调用该函数

NSData * data = [self  dataWithString: @"401A"];
[peripheral writeValue:data forCharacteristic:characteristic                                       
                            type:CBCharacteristicWriteWithResponse];

通过此代码,任何人都可以将字符串发送到 BLE 设备。谢谢和干杯

于 2016-11-16T11:12:58.333 回答