易码技术论坛

 找回密码
 加入易码
搜索
查看: 213408|回复: 1

[源码] [原创]用字符串的方法显示十六进制数

[复制链接]
发表于 2006-8-22 08:26:05 | 显示全部楼层
点虫虫发 的帖子,貌似很稀有.
支持一下,^_^
 楼主| 发表于 2006-8-22 01:30:08 | 显示全部楼层 |阅读模式
  虽然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
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2024-4-28 05:11 , Processed in 0.009758 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表