区分大小端模式
以数字1举例,在小端模式下,转换成16进制为0x0100,可以看出01
在前,那么在大端模式下就是0x0001。
小端模式
// Objective-C
+ (NSData *)convertToHexStringWithNum:(int)num length:(int)length {
// 低位在前
Byte *byteData = malloc(length * sizeof(Byte));
for (int i = 0; i < length; i++) {
byteData[i] = (Byte)((num & (0x000000FF << (i * 8))) >> (i * 8));
}
NSMutableData *data = [[NSMutableData alloc] initWithBytes:byteData length:length];
free(byteData);
// NSData *data = [NSData dataWithBytes:&num length:length];
return data;
}
大端模式
+ (NSData *)convertToBigHexStringWithNum:(int)num length:(int)length {
Byte *byteData = malloc(length * sizeof(Byte));
for (int i = 0; i < length; i++) {
byteData[i] = (Byte)(num >> ((length - i - 1) * 8) & 0xFF);
}
NSMutableData *data = [[NSMutableData alloc] initWithBytes:byteData length:length];
free(byteData);
// NSData *data = [NSData dataWithBytes:&num length:length];
return data;
}
网友评论