智能车制作

标题: CODEWARRIOR数据转换底层函数 [打印本页]

作者: whut_wj    时间: 2008-10-11 18:55
标题: CODEWARRIOR数据转换底层函数
<><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>
作者: yudongx    时间: 2009-1-17 01:03
标题: Re:CODEWARRIOR数据转换底层函数
这能实现啥功能啊?
作者: lucev    时间: 2009-2-13 21:13
哇,好,谢了
作者: lb77180    时间: 2010-3-27 16:23
ok
作者: qnbs1    时间: 2010-3-27 16:30
这个有什么用。。。




欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2