00001
00002
00003
00004
00005 #include "CD_tools.h"
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 unsigned char CD_HexaToNum(char chr, unsigned char *val) {
00019 if ((chr >= '0') && (chr <= '9')) {
00020 *val = chr-'0';
00021 return(0);
00022 } else if ((chr >= 'A') && (chr <= 'F')) {
00023 *val = chr-'A'+10;
00024 return(0);
00025 } else if ((chr >= 'a') && (chr <= 'f')) {
00026 *val = chr-'a'+10;
00027 return(0);
00028 } else {
00029 return(1);
00030 }
00031 }
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044 unsigned char CD_HexaStrTo_u8(unsigned char *strx, unsigned char siz, unsigned char *val) large {
00045
00046 unsigned char tmp;
00047
00048 if (siz == 1) {
00049 if (CD_HexaToNum(strx[0], val)) {
00050 return(1);
00051 } else {
00052 return(0);
00053 }
00054 } else if (siz == 2) {
00055 if (CD_HexaToNum(strx[0], &tmp)) {
00056 return(1);
00057 } else {
00058 if (CD_HexaToNum(strx[1], val)) {
00059 return(1);
00060 } else {
00061 tmp <<= 4;
00062 *val |= tmp;
00063 return(0);
00064 }
00065 }
00066 } else {
00067 return(2);
00068 }
00069 }
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082 unsigned char CD_HexaStrTo_u16(unsigned char *strx, unsigned char siz, unsigned int *val) large{
00083
00084 unsigned char tmp;
00085 unsigned char i;
00086 unsigned int tmp2;
00087
00088 if (siz <0 || siz >4) {
00089 return(2);
00090 }
00091
00092 tmp2 = 0;
00093 for (i=0;i<siz;i++) {
00094 if (CD_HexaToNum(strx[i], &tmp)) {
00095 return(1);
00096 } else {
00097 tmp2 <<= 4;
00098 tmp2 |= tmp;
00099 }
00100 }
00101 *val = tmp2;
00102 return(0);
00103 }
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116 unsigned char CD_HexaStrTo_u32(unsigned char *strx, unsigned char siz, unsigned long *val) large {
00117
00118 unsigned char tmp;
00119 unsigned char i;
00120 unsigned long tmp2;
00121
00122 if (siz <0 || siz >8) {
00123 return(2);
00124 }
00125
00126 tmp2 = 0;
00127 for (i=0;i<siz;i++) {
00128 if (CD_HexaToNum(strx[i], &tmp)) {
00129 return(1);
00130 } else {
00131 tmp2 <<= 4;
00132 tmp2 |= tmp;
00133 }
00134 }
00135 *val = tmp2;
00136 return(0);
00137 }
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148
00149
00150 unsigned char CD_DecStrTo_u16(unsigned char *strd, unsigned char siz, unsigned int *val) large {
00151
00152 unsigned char chr;
00153 unsigned char i;
00154 unsigned int tmp;
00155
00156 if (siz > 5) {
00157 return(2);
00158 }
00159
00160 tmp = 0;
00161 for (i=0;i<siz;i++) {
00162 tmp *= 10;
00163 chr = strd[i];
00164 if ((chr >= '0') && (chr <= '9')) {
00165 tmp += (chr - '0');
00166 } else {
00167 return(1);
00168 }
00169 }
00170 *val = tmp;
00171 return(0);
00172 }
00173
00174
00175
00176
00177
00178
00179
00180
00181
00182
00183
00184
00185 unsigned char CD_u8_ToDecStr(unsigned char val, unsigned char siz, unsigned char *strdest) large {
00186
00187 unsigned char *p;
00188 unsigned char i;
00189
00190 if (siz > 3) {
00191 return(1);
00192 }
00193
00194 p = strdest;
00195 p += siz;
00196
00197 *p = '\0';
00198
00199 for (i=0;i<siz;i++) {
00200 p--;
00201 *p = (val % 10) + '0';
00202 val /= 10;
00203 }
00204
00205 return(0);
00206 }
00207
00208
00209
00210
00211
00212
00213
00214
00215
00216
00217
00218
00219 unsigned char CD_u8_ToHexaStr(unsigned char val, unsigned char siz, unsigned char *strdest) large {
00220
00221 unsigned char *p;
00222 unsigned char i;
00223 unsigned char digit;
00224
00225 if (siz > 2) {
00226 return(1);
00227 }
00228
00229 p = strdest;
00230 p += siz;
00231
00232 *p = '\0';
00233
00234 for (i=0;i<siz;i++) {
00235 p--;
00236 digit = val & 0xF;
00237 if (digit < 10) {
00238 digit = digit + '0';
00239 } else {
00240 digit = digit - 10 + 'A';
00241 }
00242 *p = digit;
00243 val >>= 4;
00244 }
00245
00246 return(0);
00247 }
00248
00249