首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

请问一个数值转换的有关问题,多谢

2013-08-25 
请教一个数值转换的问题,谢谢如何把2个整数转为一个16进制,一个存高4位,一个存低4位,谢谢了[解决办法]int

请教一个数值转换的问题,谢谢
如何把2个整数转为一个16进制,一个存高4位,一个存低4位,谢谢了
[解决办法]


int a = 0x45;
int b = 0xab;
unsigned char c = ((a >> 4) & 0xf) 
[解决办法]
 ((b & 0xf) << 4);

[解决办法]
仅供参考
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
unsigned int iv,i;
unsigned char BCD[5];//定长10位BCD码
unsigned char sv[11];
void main() {
    iv=123456789;//最大10位无符号正整数
    //INT2BCD
    sprintf(sv,"%010u",iv);
    for (i=0;i<10;i+=2) {
        BCD[i/2]=(sv[i]<<4)
[解决办法]
(sv[i+1]&0x0F);
    }
    printf("BCD=%02x%02x%02x%02x%02x\n",BCD[0],BCD[1],BCD[2],BCD[3],BCD[4]);
    //BCD2INT
    for (i=0;i<10;i+=2) {
        sv[i]='0'
[解决办法]
(BCD[i/2]>>4);
        sv[i+1]='0'
[解决办法]
(BCD[i/2]&0x0F);
    }
    sscanf(sv,"%010u",&iv);
    printf("iv=%010u\n",iv);
    getch();
}

[解决办法]

int a = 0x23;
int b = 0x24;

unsigned char dst ;

dst = ((a << 4)& 0xff)
[解决办法]
(b & 0xff) ;


[解决办法]


使用 位域+联合 可以很容易很直观的做到

#include <iostream>
using namespace std;

union A
{
unsigned char data;
struct
{
unsigned char low:4;
unsigned char high:4;
};
};


int main()
{
    A a;
a.high = 2;
a.low = 1;
cout << (int)a.data << endl;
return 0;
}

热点排行