C++字节转换 (byte转int 互转)(BCD和HEX转换)

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进制的字符串。

发布了39 篇原创文章 · 获赞 55 · 访问量 32万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览