大端小端
- 测试
int32_t a = 0x1122; int32_t big = CFSwapInt32HostToBig(a); NSData *data = [NSData dataWithBytes:&a length:sizeof(a)]; NSData *datab = [NSData dataWithBytes:&big length:sizeof(big)]; 小端序 data: 0x22 0x11 0x00 0x00 大端序 datab: 0x00 0x00 0x11 0x22
- 是否是小端模式
- (int) isLittleEndian { int i = 0x12345678; char *c = &i; return ((c[0] == 0x78) && (c[1] == 0x56) && (c[2] == 0x34) && (c[3] == 0x12)); }
数据转换
-
int 转 NSData
int value = 1; NSData *data = [NSData dataWithBytes:&value length:1];
-
NSData 转 int
int value = 0; [data getBytes:&value range:NSMakeRange(0, 2)];
-
数组 转 NSData
- 写法1
NSMutableData *data = [NSMutableData data]; Byte value = 0x01; [data appendBytes:&value length:sizeof(value)];
- 写法2
NSMutableData *data = [NSMutableData data]; Byte value[6] = {0x06,0x00,0x00,0x03,0x04,0x04}; [data appendBytes:value length:sizeof(value)];
- 写法3
Byte value[6] = {0}; value[0]=0x06; value[1]=0x00; value[2]=0x00; value[3]=0x03; value[4]=0x04; value[5]=0x04; NSData * data = [NSData dataWithBytes:value length:sizeof(value)];
-
Byte 转 NSData
Byte byte = 0x55; NSData *data = [NSData dataWithBytes:&byte lenght:7];
-
NSData 转 Byte
NSString *str = @"123"; NSData *data = [str dataUsingEncoding: NSUTF8StringEncoding]; Byte *byte = (Byte *)[data bytes];