藍(lán)牙開發(fā)就會(huì)涉及到相關(guān)數(shù)據(jù)的處理货抄,如下整理的是開發(fā)中用的到的知識(shí)點(diǎn)(后續(xù)會(huì)不斷更新)
NSData與Byte的轉(zhuǎn)換
int allDataLength = (int)allData.length;
Byte allDataByte[allDataLength];
[allData getBytes:&allDataByte length:allDataLength];
兩位NSData轉(zhuǎn)int
int value=*(int*)([intdata bytes]);
兩位NSData高低字節(jié)轉(zhuǎn)換成int
int heartCount = 0;
//獲取心率數(shù)據(jù)
Byte heart[2];
heart[0] = allDataByte[10];
heart[1] = allDataByte[11];
NSData *heartData = [NSData dataWithBytes:heart length:2];
//這樣獲取到的值是高低字節(jié)轉(zhuǎn)化過的
//例如:0xff00,轉(zhuǎn)換的數(shù)據(jù)是0x00ff的值,也就是255
[heartData getBytes:&heartCount length:2];
數(shù)值轉(zhuǎn)16進(jìn)制字符串
//轉(zhuǎn)換出來的字符串是小寫字母帽氓,如需大寫再進(jìn)行轉(zhuǎn)換
- (NSString*)stringWithHexNumber:(long long int)hexNumber
{
char hexChar[20];
sprintf(hexChar,"%llx", hexNumber);
NSString *hexString = [NSString stringWithCString:hexChar encoding:NSUTF8StringEncoding];
return hexString;
}
字符串的大小寫轉(zhuǎn)換
// 把字符串全部轉(zhuǎn)化為小寫
NSString *lowercaseString = [str lowercaseString];
NSString * lowercaseString = str.lowercaseString;
// 把字符串全部轉(zhuǎn)化為大寫
NSString *uppercaseString = [str uppercaseString];
NSString *uppercaseString = str.uppercaseString;
//開頭大寫,其余小寫
NSString *capitalizedString =[str capitalizedString];
16進(jìn)制字符串轉(zhuǎn)數(shù)值
- (long long int)numberWithHexString:(NSString*)hexString
{
const char *hexChar = [hexString cStringUsingEncoding:NSUTF8StringEncoding];
long long int hexNumber;
sscanf(hexChar,"%llx", &hexNumber);
return (long long int)hexNumber;
}
16進(jìn)制字符串轉(zhuǎn)NSData
//這個(gè)方法是從頭開始取分瘾,如果字符串是奇數(shù)朴肺,最后一位會(huì)被舍棄
- (NSData *) stringToHexData:(NSString *)hexStr
{
unsigned long len = [hexStr length] / 2; // Target length
unsigned char *buf = malloc(len);
unsigned char *whole_byte = buf;
char byte_chars[3] = {'\0','\0','\0'};
int i;
for (i=0; i < [hexStr length] / 2; i++) {
byte_chars[0] = [hexStr characterAtIndex:i*2];
byte_chars[1] = [hexStr characterAtIndex:i*2+1];
*whole_byte = strtol(byte_chars, NULL, 16);
whole_byte++;
}
NSData *data = [NSData dataWithBytes:buf length:len];
free( buf );
return data;
}
//這個(gè)方法,如果字符串是奇數(shù)位聪轿,則第一位默認(rèn)補(bǔ)零,再依次向后轉(zhuǎn)換
- (NSData *)convertHexStrToData:(NSString *)str
{
if (!str || [str length] == 0) {
return nil;
}
NSMutableData *hexData = [[NSMutableData alloc] initWithCapacity:20];
NSRange range;
if ([str length] % 2 == 0) {
range = NSMakeRange(0, 2);
} else {
range = NSMakeRange(0, 1);
}
for (NSInteger i = range.location; i < [str length]; i += 2) {
unsigned int anInt;
NSString *hexCharStr = [str substringWithRange:range];
NSScanner *scanner = [[NSScanner alloc] initWithString:hexCharStr];
[scanner scanHexInt:&anInt];
NSData *entity = [[NSData alloc] initWithBytes:&anInt length:1];
[hexData appendData:entity];
range.location += range.length;
range.length = 2;
}
return hexData;
}