读书人

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

发布时间: 2013-08-25 10:49:56 作者: rapoo

请教一个数值转换的问题,谢谢
如何把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;
}

读书人网 >C++

热点推荐