- 注册时间
- 2004-8-27
- 最后登录
- 1970-1-1
|
虽然C语言的printf本身能显示16进制数,但并不是所有的环境都能用printf,例如NDS编程环境printf并不能用,取而代之的是OUTTEXT函数,但OUTTEXT并不完全实现 printf的功能,如显示16进制数。幸运的是,OUTTEXT还是能显示字符串的,因此,只需要把16进制数转换成字符串即可。
运用方法:Byte_To_Hex(待转换的数,存放转换结果的数组)
这是一个很简单的代码,只能显示0~FF范围内的数。因为只使用了C语言最基本的功能,因此原则上是任何兼容C语言的环境都能用它的——不仅仅是NDS
下面是源代码:
void Byte_To_Hex(unsigned int source,char* String_Bytes);//(函数的声明)
……中间省略……
void Byte_To_Hex(unsigned int source,char* String_Bytes)
{unsigned int temp1;
temp1=source&0x0f;
if (temp1<10 )
String_Bytes[1]=temp1+48;
else
String_Bytes[1]=temp1+55;
temp1=source>>4&0x0f;
if (temp1<10 )
String_Bytes[0]=temp1+48;
else
String_Bytes[0]=temp1+55;
String_Bytes[2]=0;
//PA_OutputText(1,2,2,"%s %d %d",String_Bytes,String_Bytes[0],String_Bytes[1]);
}
-------------------
MAIN函数部分
int main(int argc, char ** argv)
{unsigned int Hex[3];//存放转换后的字符串
PA_Init(); // Initializes PA_Lib
PA_InitVBL(); // Initializes a standard VBL
PA_InitText(0, 0); // Initialise the text system on the bottom screen
PA_InitText(1, 0); // Initialise the text system on the top screen
//(上面是NDS的初始化PALIB环境的必要部分,PC是不需要的。)
Byte_To_Hex(0x9a,Hex);
PA_OutputText(1,1,1,"%s",Hex);//这就是PALIB的printf
Byte_To_Hex(0xb8,Hex);
PA_OutputText(1,1,2,"%s",Hex);
Byte_To_Hex(0xcd,Hex);
PA_OutputText(1,1,3,"%s",Hex);
Byte_To_Hex(0x47,Hex);
PA_OutputText(1,1,4,"%s",Hex);}
------------------------------
正确运行的结果应该显示:
9A
B8
CD
47 |
|