将整数值转换为十六进制值

时间:2012-12-24 12:45:23

标签: c hex decimal fpga xilinx

我在xilinx中有这个功能,可以输出七段。

int result;
    XIo_Out32(XPAR_SSG_DECODER_0_BASEADDR,  result);

该函数获取int结果并将输出作为十六进制值放入七个段。所以基本上,如果我给出结果= 11;我会在七段中看到A的结果。要在sseg上查看十进制值,一种方法是更改​​后面的verilog代码并更改sseg的整个概念。另一种方法是编写一个将十进制值更改为十六进制值的函数。我一直在寻找一个很好的代码块,但似乎每一个都用循环打印数字。我需要整个价值作为一个块。不幸的是我不能使用C ++库,所以我有原始的C代码。有没有已知的转换算法?

1 个答案:

答案 0 :(得分:0)

显然,您希望将符号代码从ASCII转换为7段显示字符集中的符号代码。如果是这样,您可以创建一个简单的映射,也可以是由ASCII字符id索引的代码数组。然后,您将能够将您的功能称为:

XIo_Out32(XPAR_SSG_DECODER_0_BASEADDR,  'A');

小心实现整个ASCII范围的映射表。

修改

抱歉,我的问题出错了。您必须手动将十六进制数转换为十进制符号数组。你可以通过增加10的幂(10 ^ 0,10 ^ 1,10 ^ 2等)来划分你的数字,从而得到一个余数数组,这是你的数字的十进制表示。您可以使用snprintf作为H2CO3推荐,但我建议在某些RAM受限的嵌入式应用程序中使用它;你甚至可能根本无法使用类似sprintf的功能。