假设一个NSData的内容是<80090107 00a70000 0d1003>
现在求该指令的长度2字节放在最开始的位置,并且小端模式。
以前对byte的操作不熟悉,所以采取了以下方式:
1) 首先将NSData计算NSData的长度,然后转换成4位16进制字符串-000b, 然后交换0b和00的位置-0b00,NSData转字符串,将0b00放到首位组成新的字符串,最后将新的字符串转换成NSData <0b0080090107 00a70000 0d1003>
以上方法效率低,并且是狗屎代码
最新采取以下方法,提高了效率并且可读性和维护性好:
2)typedef unsigned char BLE_Char;
BLE_Char cosLen[2];
cosLen[0] = data.length & 0xFF;
cosLen[1] = (data.length >> 8) & 0xFF;
NSMutableData *newData = [NSMutableData data];
[newData appendBytes:cosLen length:sizeof(BLE_Char) * 2];
[newData appendData:data];