智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 3413|回复: 4
打印 上一主题 下一主题

CODEWARRIOR数据转换底层函数

[复制链接]

14

主题

929

帖子

1

精华

功勋会员

WJ

Rank: 10Rank: 10Rank: 10

积分
6304

特殊贡献奖章

威望
1456
贡献
4674
兑换币
17
注册时间
2008-4-6
在线时间
87 小时
跳转到指定楼层
1#
发表于 2008-10-11 18:55:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
<><FONT size=4>这个是从BEEKIT上发现的,非常不错的,介绍给大家</FONT></P><P><FONT size=4>#include "string.h"</FONT></P><P><FONT color=#f73809 size=4>void int2string (UINT32 value, char *string) {</FONT></P><P><FONT size=4>&nbsp;UINT8 remainder;<BR>&nbsp;UINT8 offset = 9;<BR>&nbsp;<BR>&nbsp;(void)strcpy(string, "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ");<BR>&nbsp;<BR>&nbsp;do {<BR>&nbsp;&nbsp;remainder = value % 10;<BR>&nbsp;&nbsp;string[offset] = UTILDec2Char(remainder);<BR>&nbsp;&nbsp;value = value / 10;<BR>&nbsp;&nbsp;offset--;<BR>&nbsp;} <BR>&nbsp;while (value != 0);</FONT></P><P><FONT size=4>&nbsp;string[10] = 0;&nbsp;&nbsp;//Set to null.</FONT></P><P><FONT size=4>}</FONT></P><P><FONT color=#ee3d11 size=4>char UTILDec2Char(UINT8 value) {</FONT></P><P><FONT size=4>&nbsp;if (value &lt;=9) // ((value &gt;= 0) &amp;&amp; (value &lt;=9))<BR>&nbsp;&nbsp;return (char) (value + 0x30);<BR>&nbsp;else<BR>&nbsp;&nbsp;return (char) (value + 0x37);<BR>}</FONT></P><P><FONT color=#f73809 size=4>UINT8 char2num(char ch) {</FONT></P><P><FONT size=4>&nbsp;&nbsp; UINT8 value=0;</FONT></P><P><FONT size=4>&nbsp;&nbsp; if ((ch &gt;= &#39;0&#39;) &amp;&amp; (ch &lt;=&#39;9&#39;)) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; value = ch - 0x30;<BR>&nbsp;&nbsp; } else {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; value = 0;<BR>&nbsp;&nbsp; }<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; return value;<BR>}</FONT></P><P><FONT size=4><FONT color=#ff3300>UINT32 String2Uint32(char *str) {</FONT><BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; UINT8 u8i, u8length;<BR>&nbsp;&nbsp; UINT32 u32value=0;<BR>&nbsp;&nbsp; UINT32 u32total=0;<BR>&nbsp;&nbsp; UINT16 u16base=1;<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; //Check for Null String<BR>&nbsp;&nbsp; u8length = (UINT8) strlen(str);<BR>&nbsp;&nbsp; if (u8length == 0) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 0;<BR>&nbsp;&nbsp; }<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; //Check for Overflow of the UINT32 variable.<BR>&nbsp;&nbsp; if (u8length &gt; 8) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 0xFFFFFFFF;<BR>&nbsp;&nbsp; }<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; for (u8i=0; u8i&lt;u8length; u8i++) {<BR>&nbsp;&nbsp;&nbsp;&nbsp; u32value = char2num((char) str[u8length-u8i-1]);<BR>&nbsp;&nbsp;&nbsp;&nbsp; u32value *= u16base;<BR>&nbsp;&nbsp;&nbsp;&nbsp; u16base *= 10;<BR>&nbsp;&nbsp;&nbsp;&nbsp; u32total += u32value;<BR>&nbsp;&nbsp; }<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; return u32total;<BR>}</FONT></P><P><FONT size=4><FONT color=#f73809>UINT16 String2Uint16(char *str) {</FONT><BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; UINT8 u8i, u8length;<BR>&nbsp;&nbsp; UINT32 u32value=0;<BR>&nbsp;&nbsp; UINT16 u16total=0;<BR>&nbsp;&nbsp; UINT16 u16base=1;<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; //Check for Null String<BR>&nbsp;&nbsp; u8length = (UINT8)strlen(str);<BR>&nbsp;&nbsp; if (u8length == 0) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 0;<BR>&nbsp;&nbsp; }<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; //Check for Overflow of the UINT32 variable.<BR>&nbsp;&nbsp; if (u8length &gt; 8) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 0xFFFFFFFF;<BR>&nbsp;&nbsp; }<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; for (u8i=0; u8i&lt;u8length; u8i++) {<BR>&nbsp;&nbsp;&nbsp;&nbsp; u32value = char2num((char) str[u8length-u8i-1]);<BR>&nbsp;&nbsp;&nbsp;&nbsp; u32value *= u16base;<BR>&nbsp;&nbsp;&nbsp;&nbsp; u16base *= 10;<BR>&nbsp;&nbsp;&nbsp;&nbsp; u16total += (UINT16)u32value;<BR>&nbsp;&nbsp; }<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; return u16total;<BR>}</FONT></P><P><FONT color=#f73809 size=4>void UTILInt2String (UINT32 value, UINT8 *string) {</FONT></P><P><FONT size=4>&nbsp;&nbsp;&nbsp; UINT8 remainder;<BR>&nbsp;&nbsp;&nbsp; UINT8 offset = 9;<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; (void)strcpy(string, "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ");<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; do {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; remainder = value % 10;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string[offset] = UTILDec2Char(remainder);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; value = value / 10;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; offset--;<BR>&nbsp;&nbsp;&nbsp; } <BR>&nbsp;&nbsp;&nbsp; while (value != 0);</FONT></P><P><FONT size=4>&nbsp;&nbsp;&nbsp; string[10] = 0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //Set to null.</FONT></P><P><FONT size=4>}</FONT></P><P><FONT color=#ff0000 size=4>void Uint32ToHexString(UINT32 u32Num, UINT8 *pu8Str) {</FONT></P><P><FONT size=4>&nbsp;UINT8 u8Mod = 0;<BR>&nbsp;UINT8 u8Offset = 9;<BR>&nbsp;<BR>&nbsp;(void)strcpy(pu8Str, "00000000000");<BR>&nbsp;<BR>&nbsp;while(u32Num != 0){<BR>&nbsp;&nbsp; u8Mod = u32Num % 16;<BR>&nbsp;&nbsp; pu8Str[u8Offset] = UTILDec2Char(u8Mod);<BR>&nbsp;&nbsp; u32Num/=16;<BR>&nbsp;&nbsp; u8Offset--;<BR>&nbsp;}<BR>&nbsp;pu8Str[0] = &#39;0&#39;;<BR>&nbsp;pu8Str[1] = &#39;x&#39;;<BR>&nbsp;pu8Str[10] = &#39;&#92;0&#39;;<BR>&nbsp; <BR>}</FONT></P><P><FONT size=4><FONT color=#f73809>void trimWhiteSpace(char *str) {</FONT><BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; UINT8 length, i=0;<BR>&nbsp;&nbsp; UINT8 leading_ws=0;<BR>&nbsp;&nbsp; UINT8 ws_flag = TRUE;<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; length = (UINT8) strlen(str);<BR>&nbsp;&nbsp; </FONT></P><P><FONT size=4>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while ((i &lt; length) &amp;&amp; (ws_flag == TRUE)) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (str<i> &gt;= 33 &amp;&amp; str<i> &lt;=126) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ws_flag = FALSE;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i++;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; leading_ws = i;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (void)strcpy(str, str + leading_ws);&nbsp;&nbsp; <BR>}<BR></FONT></P>

0

主题

109

帖子

0

精华

高级会员

Rank: 4

积分
572
威望
374
贡献
82
兑换币
60
注册时间
2008-12-4
在线时间
58 小时
2#
发表于 2009-1-17 01:03:41 | 只看该作者

Re:CODEWARRIOR数据转换底层函数

这能实现啥功能啊?
回复 支持 反对

使用道具 举报

4

主题

76

帖子

0

精华

高级会员

Rank: 4

积分
513
威望
369
贡献
92
兑换币
56
注册时间
2009-2-2
在线时间
26 小时
3#
发表于 2009-2-13 21:13:46 | 只看该作者
哇,好,谢了
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
247
威望
196
贡献
47
兑换币
14
注册时间
2010-3-27
在线时间
2 小时
4#
发表于 2010-3-27 16:23:45 | 只看该作者
ok
回复 支持 反对

使用道具 举报

8

主题

172

帖子

0

精华

金牌会员

http://iyinjia.taobao.com光电资 .

Rank: 6Rank: 6

积分
1046
威望
510
贡献
460
兑换币
22
注册时间
2010-1-17
在线时间
38 小时
5#
发表于 2010-3-27 16:30:32 | 只看该作者
这个有什么用。。。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-9-20 19:53 , Processed in 0.184650 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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