2个字节short int 高低位转化:
short int y=0x7f21;
y = ( (y & 0xff00) >> 8) | ( (y & 0x00ff ) << 8);
printf("%#x",y);
用short型变量储存,用移位操作和或操作拼接。
例:
short a = dt_data[1];
a <<= 8;
a |= dt_data[0];
//注:有的编译器int是两字节,有的是4字节(比如VC)。
short是字节类型。
以下双字节转换,均为高字节在前:
HEX数据 :0X01 0X68
//转化为HEX,就是十六进制数据拼接0X0168
int sDefibrEnergy = ((lptrOrder[0] & 0xF0)>>4)*1000 + (lptrOrder[0] & 0x0F)*100 + ((lptrOrder[1] & 0xF0)>>4)*10 + (lptrOrder[1] & 0x0F);
sDefibrEnergy=168
//转化为DEC十进制,其结果是十进制360
public static int bytes2Int(byte[] bytes){
int num=bytes[1] & 0xFF;
num |=((bytes[0] <<8)& 0xFF00);
return num;
}
//num=360;
如果是四字节的话,如下进行byte转int
public static int bytes2Int(byte[] bytes){
int num=bytes[3] & 0xFF;
num |=((bytes[2] <<8)& 0xFF00);
num |=((bytes[1] <<16)& 0xFF0000);
num |=((bytes[0] <<24)& 0xFF0000);
return num;
}
如果是四字节的话,如下进行int转byte
public static byte[] int2ByteArray(int i){
byte[] result=new byte[4];
result[0]=(byte)((i >> 24)& 0xFF);
result[1]=(byte)((i >> 16)& 0xFF);
result[2]=(byte)((i >> 8)& 0xFF);
result[3]=(byte)(i & 0xFF);
return result;
}
BCD和HEX转换程序
unsigned char BCD2HEX(unsigned char bcd_data) //BCD转为HEX子程序
{
unsigned char temp;
temp=(bcd_data/16*10 + bcd_data%16);
return temp;
}
unsigned char HEX2BCD(unsigned char hex_data) //HEX转为BCD子程序
{
unsigned char temp;
temp=(hex_data/10*16 + hex_data%10);
return temp;
}
BCD码转化成10进制输出方法:
将BCD码先转换为两字符的16进制字符串的拼接,注意高低位顺序。
将所完成的16进制字符串拼接输出到可视控件或屏幕,就是显示10进制的字符串。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)