iOS 字节的处理

2023-04-05  本文已影响0人  Lin_梓明

做个记录以及项目里涉及到的问题
一、整形装换成两个字节
int value = 456;
unsigned char byte1 = (value & 0xff00)>>8; //高8位
unsigned char byte2 = (value & 0xff);//低8位

NSLog(@"byte1= %x   byte2= %x ",byte1,byte2);
    byte1 = 1;  byte2= c8;

二、两个字节转换成十进制整数
char bytes[]={byte1,byte2};
unsigned char by1 = (bytes[0] & 0xff); //高8位
unsigned char by2 = (bytes[1] & 0xff);//低8位
int temp = (by2|(by1<<8));
NSLog(@"temp = %d",temp);

temp = 456;

三、整形装换成三个字节

int value =134456;
unsigned char  byte1 = (value & 0xff0000)>>16;//最高8位
unsigned char  byte2 = (value & 0xff00)>>8;//中间8位
unsigned char  byte3 = (value & 0xff);//低8位

NSLog(@"byte1= %x   byte2= %x byte3= %x ",byte1,byte2,byte3);
byte1= 2   byte2= d byte3= 38

四、三个字节转换成十进制整数
char bytes[]={byte1,byte2,byte3};
unsigned char by1 = (bytes[0] & 0xff); //高8位
unsigned char by2 = (bytes[1] & 0xff);//中8位
unsigned char by3 = (bytes[2] & 0xff);//低8位

int   temp  = (by3|(by2<<8)|(by1<<16));
NSLog(@"temp = %d",temp);

temp = 134456

五、高地位int类型取高低位的值
int temp = 3336;
int h = (time>>8) & 0xff;
int l = time & 0xff;

六、转回高地位int类型的数值
利用strtoul函数将16进制的字符串转为高低位int类型,方法比较愚蠢,有比较好的处理方案可以告诉我一声哈~
NSString * aa = [NSString ToHex:[arr[0] integerValue]];
NSString * bb = [NSString ToHex:[arr[1] integerValue]];
NSString *tempStr = [NSString stringWithFormat:@"0x%@%@",aa,bb];
int temp = strtoul([tempStr UTF8String],0,16);

上一篇 下一篇

猜你喜欢

热点阅读