學(xué)習(xí)Tips
-
ios中將16進(jìn)制轉(zhuǎn)換為浮點(diǎn)型
NSString *temp = [NSString stringWithFormat:@"%@%@",@"0x",[[[temp0 stringByAppendingString:temp1] stringByAppendingString:temp2] stringByAppendingString:temp3]];
const char *str = NULL;
if ([temp canBeConvertedToEncoding:NSUTF8StringEncoding]) {
str = [temp cStringUsingEncoding:NSUTF8StringEncoding];
}
uint32_t num;
float f;
sscanf(str, "%x", &num); // assuming you checked input
f = *((float*)&num);
printf("the hexadecimal 0x%08x becomes %.3f as a float\n", num, f);
+ (NSString *)getCrc16_MODBUSWithString:(NSString *)str{
NSArray *array = [[NSArray alloc]initWithArray:[self seperateStr:str byLength:2]];
unsigned short tmp = 0xffff;
unsigned short ret1 = 0;
Byte buff[10240] = {};
for (int i = 0; i < array.count; i++) {
buff[i] = [[self decimalStringFromHexString:array[i]] intValue];// 這個是10進(jìn)制轉(zhuǎn)換成16進(jìn)制
}
for(int n = 0; n < array.count; n++){
tmp = buff[n] ^ tmp;
for(int i = 0;i < 8;i++){ /*此處的8 -- 指每一個char類型又8bit,每bit都要處理*/
if(tmp & 0x01){
tmp = tmp >> 1;
tmp = tmp ^ 0xa001;
}
else{
tmp = tmp >> 1;
}
}
}
/*CRC校驗后的值*/
printf("校驗后的值%X\n",tmp);
/*將CRC校驗的高低位對換位置*/
ret1 = tmp >> 8;
ret1 = ret1 | (tmp << 8);
printf("高低位對換后的值ret: %X\n",ret1);
NSString *returnStr = [NSString stringWithFormat:@"%X",ret1];
return returnStr;
}
工具推薦
地址 https://www.gaituya.com/
地址 https://wallhaven.cc/
地址 https://www.fontspace.com/
地址 https://www.iodraw.com/
地址 https://www.cxy521.com
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。