十进制怎么转化成十六进制

2019-07-15 08:40发布

int a = 15;
int b = 8;
int z;
a和b怎么转成 z = 0xf8;(z = 0xab)
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
jblbin2008
1楼-- · 2019-07-16 19:35
我记得c语言有连接字符串的函数,可以支持连接运算的。
GreatDream
2楼-- · 2019-07-16 21:42
本帖最后由 GreatDream 于 2018-4-13 22:54 编辑

wulinwl 发表于 2018-4-13 21:03
现在使用的都是8位以上的单片机,在8位机中都是以8位为基础处理数据的,极少把8位数据再分解为高4位和低4位来处理,虽然有一些使用案例,但现在对你讲你也不能理解,随着学习水平提高自然就明白了。


不是8位分为高4和低4,我想要的是16位分为高8和低8。

不管前面的,你看看下面的可以实现?

int a = 248; z = a;然后再怎么把 z = a转成 z=0xf8;(这个你可以当成高8位的吧)

int b = 169; y = b; 然后再怎么把 y = b转成 y = 0xa9;(这个你可以当成低8位的吧)

这个要怎么实现?

GreatDream
3楼-- · 2019-07-17 01:12
本帖最后由 GreatDream 于 2018-4-13 23:23 编辑

有点像c语言一样:
int main()
{
        int a = 248;
        int b = 169;
        printf("z = %#x ", a);
        printf("y = %#x ", b);
               
        return 0;
}
就是想得到输出的z和y一样的结果;
但在单片机中怎么输出这样的z和y;
仰恩湖
4楼-- · 2019-07-17 05:26
z是整形的,如果值是248,那他在内存中就是0x000000F8。你应该把他最低的8位取出来,然后再分别取两次4位到两个变量中,最后把两个变量的值转换成可见字符,这两个变量的最大值不会超过15。不知有没有帮助 :)

uint8_t test(void)
{
        uint8_t hi4 = 0;
        uint8_t lo4 = 0;
       
        uint8_t z = 248;
       
        hi4 = (z & 0xF0) >> 4;       
        lo4 = (z & 0x0F);       
       
        if(hi4 >= 'A')
                hi4 -= (10 - 'A');
        else
                hi4 += '0';
       
        if(lo4 >= 'A')
                lo4 -= (10 - 'A');
        else
                lo4 += '0';
       
        //printf("0x%0x", z);
        //printf("0x%c%c", hi4, lo4);
}
wulinwl
5楼-- · 2019-07-17 06:40
 精彩回答 2  元偷偷看……
GreatDream
6楼-- · 2019-07-17 10:21
wulinwl 发表于 2018-4-14 07:38

是不是说也可以这样合成8位的:
char x, y, z;
void main()
{
     x = 15;
     y = 8;
     z = x<<4|y;
}
又或者这样合成16位的:
char x, y, a;
int z, b;
void main()
{
     x = 10;
     y = 9;
     a = x<<4 | y;
     b = 248;
     z = b << 8 | a;
}
是这样的?

一周热门 更多>