From 87f1b47149f7974ab5faa81b8b9d3c4b26b68838 Mon Sep 17 00:00:00 2001 From: JAJames Date: Tue, 10 May 2016 02:34:35 -0400 Subject: [PATCH] Added functions 'Jupiter_asHex_upper' and 'Jupiter_asHex_lower' --- Jupiter/Functions.c | 54 +++++++++++++++++++++++++++++++++++++++++++- Jupiter/Functions.h | 34 +++++++++++++++++++++------- Release/Jupiter.lib | Bin 302216 -> 302668 bytes 3 files changed, 79 insertions(+), 9 deletions(-) diff --git a/Jupiter/Functions.c b/Jupiter/Functions.c index f6c8d33..d8bf2f8 100644 --- a/Jupiter/Functions.c +++ b/Jupiter/Functions.c @@ -70,7 +70,7 @@ char *getTimeFormat(const char *format) return rtime; } -/** Character to integer conversion table */ +/** Character to integer conversion tables */ const unsigned char base_table[] = { @@ -124,6 +124,48 @@ const signed char octal_table[] = -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; +/** Integer to string (hexadecimal) conversion tables */ + +const char hexadecimal_rep_table_upper[][3] = +{ + "00", "01", "02", "03", "04", "05", "06", "07", "08", "09", "0A", "0B", "0C", "0D", "0E", "0F", + "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "1A", "1B", "1C", "1D", "1E", "1F", + "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "2A", "2B", "2C", "2D", "2E", "2F", + "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "3A", "3B", "3C", "3D", "3E", "3F", + "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "4A", "4B", "4C", "4D", "4E", "4F", + "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "5A", "5B", "5C", "5D", "5E", "5F", + "60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "6A", "6B", "6C", "6D", "6E", "6F", + "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", "7A", "7B", "7C", "7D", "7E", "7F", + "80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "8A", "8B", "8C", "8D", "8E", "8F", + "90", "91", "92", "93", "94", "95", "96", "97", "98", "99", "9A", "9B", "9C", "9D", "9E", "9F", + "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "AA", "AB", "AC", "AD", "AE", "AF", + "B0", "B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "BA", "BB", "BC", "BD", "BE", "BF", + "C0", "C1", "C2", "C3", "C4", "C5", "C6", "C7", "C8", "C9", "CA", "CB", "CC", "CD", "CE", "CF", + "D0", "D1", "D2", "D3", "D4", "D5", "D6", "D7", "D8", "D9", "DA", "DB", "DC", "DD", "DE", "DF", + "E0", "E1", "E2", "E3", "E4", "E5", "E6", "E7", "E8", "E9", "EA", "EB", "EC", "ED", "EE", "EF", + "F0", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "FA", "FB", "FC", "FD", "FE", "FF" +}; + +const char hexadecimal_rep_table_lower[][3] = +{ + "00", "01", "02", "03", "04", "05", "06", "07", "08", "09", "0a", "0b", "0c", "0d", "0e", "0f", + "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "1a", "1b", "1c", "1d", "1e", "1f", + "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "2a", "2b", "2c", "2d", "2e", "2f", + "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "3a", "3b", "3c", "3d", "3e", "3f", + "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "4a", "4b", "4c", "4d", "4e", "4f", + "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "5a", "5b", "5c", "5d", "5e", "5f", + "60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "6a", "6b", "6c", "6d", "6e", "6f", + "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", "7a", "7b", "7c", "7d", "7e", "7f", + "80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "8a", "8b", "8c", "8d", "8e", "8f", + "90", "91", "92", "93", "94", "95", "96", "97", "98", "99", "9a", "9b", "9c", "9d", "9e", "9f", + "a0", "a1", "a2", "a3", "a4", "a5", "a6", "a7", "a8", "a9", "aa", "ab", "ac", "ad", "ae", "af", + "b0", "b1", "b2", "b3", "b4", "b5", "b6", "b7", "b8", "b9", "ba", "bb", "bc", "bd", "be", "bf", + "c0", "c1", "c2", "c3", "c4", "c5", "c6", "c7", "c8", "c9", "ca", "cb", "cc", "cd", "ce", "cf", + "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "d8", "d9", "da", "db", "dc", "dd", "de", "df", + "e0", "e1", "e2", "e3", "e4", "e5", "e6", "e7", "e8", "e9", "ea", "eb", "ec", "ed", "ee", "ef", + "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7", "f8", "f9", "fa", "fb", "fc", "fd", "fe", "ff" +}; + /** Single character functions */ bool Jupiter_isBase(unsigned char chr, int base) @@ -169,6 +211,16 @@ int Jupiter_getOctal(unsigned char chr) return octal_table[chr]; } +const char *Jupiter_asHex_upper(uint8_t oct) +{ + return hexadecimal_rep_table_upper[oct]; +} + +const char *Jupiter_asHex_lower(uint8_t oct) +{ + return hexadecimal_rep_table_lower[oct]; +} + /** Unsafe string converters */ int Jupiter_strtoi(const char *str, int base) diff --git a/Jupiter/Functions.h b/Jupiter/Functions.h index d19afa0..160304a 100644 --- a/Jupiter/Functions.h +++ b/Jupiter/Functions.h @@ -144,7 +144,7 @@ JUPITER_API uint64_t getPowerTwo64(uint64_t number); * @brief Checks if a character is a digit character of a specified radix. * Note: The maximum base is 36 (0-9 and a-z) * -* @param c Character to check. +* @param chr Character to check. * @return True if the character is a hexadecimal digit, false otherwise. */ JUPITER_API bool Jupiter_isBase(unsigned char chr, int base); @@ -152,7 +152,7 @@ JUPITER_API bool Jupiter_isBase(unsigned char chr, int base); /** * @brief Checks if a character is a hexadecimal digit character. (base 16) * -* @param c Character to check. +* @param chr Character to check. * @return True if the character is a hexadecimal digit, false otherwise. */ JUPITER_API bool Jupiter_isHex(unsigned char chr); @@ -160,7 +160,7 @@ JUPITER_API bool Jupiter_isHex(unsigned char chr); /** * @brief Checks if a character is a decimal digit character. (base 10) * -* @param c Character to check. +* @param chr Character to check. * @return True if the character is a decimal digit, false otherwise. */ JUPITER_API bool Jupiter_isDecimal(unsigned char chr); @@ -168,7 +168,7 @@ JUPITER_API bool Jupiter_isDecimal(unsigned char chr); /** * @brief Checks if a character is an octal digit character. (base 10) * -* @param c Character to check. +* @param chr Character to check. * @return True if the character is a octal digit, false otherwise. */ JUPITER_API bool Jupiter_isOctal(unsigned char chr); @@ -177,7 +177,7 @@ JUPITER_API bool Jupiter_isOctal(unsigned char chr); * @brief Fetches a character's represented integral value. * Note: The maximum base is 36 (0-9 and a-z) * -* @param c Character to fetch value of. +* @param chr Character to fetch value of. * @param base Base of the representation. * @return A character's represented integral value on success, -1 otherwise. */ @@ -186,7 +186,7 @@ JUPITER_API int Jupiter_getBase(unsigned char chr, int base); /** * @brief Fetches a hexadecimal character's represented integral value. (base 16) * -* @param c Character to fetch value of. +* @param chr Character to fetch value of. * @return A character's represented integral value on success, -1 otherwise. */ JUPITER_API int Jupiter_getHex(unsigned char chr); @@ -194,7 +194,7 @@ JUPITER_API int Jupiter_getHex(unsigned char chr); /** * @brief Fetches a decimal character's represented integral value. (base 10) * -* @param c Character to fetch value of. +* @param chr Character to fetch value of. * @return A character's represented integral value on success, -1 otherwise. */ JUPITER_API int Jupiter_getDecimal(unsigned char chr); @@ -202,11 +202,29 @@ JUPITER_API int Jupiter_getDecimal(unsigned char chr); /** * @brief Fetches a octal character's represented integral value. (base 8) * -* @param c Character to fetch value of. +* @param chr Character to fetch value of. * @return A character's represented integral value on success, -1 otherwise. */ JUPITER_API int Jupiter_getOctal(unsigned char chr); +/** +* @brief Fetches the string hexadecimal representation of an octet. +* Note: This function returns the upper-case hexadecimal notation +* +* @param oct Octet to fetch hexadecimal representation of +* @return The octet's hexadecimal representation as a string +*/ +JUPITER_API const char *Jupiter_asHex_upper(uint8_t oct); + +/** +* @brief Fetches the string hexadecimal representation of an octet. +* Note: This function returns the lower-case hexadecimal notation +* +* @param oct Octet to fetch hexadecimal representation of +* @return The octet's hexadecimal representation as a string +*/ +JUPITER_API const char *Jupiter_asHex_lower(uint8_t oct); + /** * @brief Interprets a string into an integer. * diff --git a/Release/Jupiter.lib b/Release/Jupiter.lib index 92dee0182892c20c3fdceb98c86cf989ccc5b638..300100abefa10247042a26914ca029289212773b 100644 GIT binary patch delta 34094 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 CUTdoW delta 33824 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

OI+GP7> z8-ym~*<$8U@-;i#cR{gD4OQM`oznI(XFW;*v`JcBk8&k7X>|}&KluYkdFD%rqv6{j zLHJrZdWmt(=v#@6aSD{uEgE^wW3)r(g%=ul;py8Ik8McV)wlT>uLBKLv~JW$dEXE* zpH^ED-)ThCJ1zBcHTLFNpDQeDOs+usF5QImO+&XnVze2LQ4CEjDw>q;%}*(_#bl>c z9=#iX=SvT1>Mu%fGwo?g)~4iLvl;mltsl=O-J^VLM>@VaIV5FY>uP2yovtT0$C9jC z3-V@i(8Ly=gKG22wr#6)OXa;!PHVxxT2hjsSt!toRA$<_4m8^@`_@##VHC-k?pA(D($@c5FTYO)w5Ve1~Y@JN-_6e6_$W zQAh7eOPQJEh-~M{;YF*}$4BkR@yIw0+IzckEd zJ~Z8C?nu)uW#R=LDHHn+MV7&{;@aX+UgH1EtZ-Zxx7=uFP% zU!N80LhCb15kGYCOrmM!*|{stHg=43F!@K)13K9p-Hk+}&lnze^I|e-A2+tUXN;G= ztNwR)5|?K5@o`?tuz#n++QO{c)*D+y?-7;Ek(uX<{?WhJgPOAs=u4JGURCwn^hLt2 ze3gVx(reEoz50&5KIlm?X$sqLG&|7^dQ(qTTo0P2d~X%JvoD1w<(vNfDc{ht z`9*(P_0mds{s6j1vsl$pgw-wAEo7T;~5!g<@v}mR2>CkX5D<-`IFmMD}!>{?LBgiCn`8Rl! zySSSBnp)-tp3lv`)5Ax=&04ldt;gJ_&jp;N<4AAmIFjnx2diIq*R7K<*zfi2k!r}o z8mV>kC~{Nk+nQzqiXAk?1|@c@nOZ-4shnxf>bS*dwcM4_HjsLZ`yk&KwKDmGliq`y zW7KN*0siofW0hTF)!L+cx%8xQ?k;*d#5kshj#ncSkA9yvxw!U^=Cm2_zGv5eyuX2n z3GRdH6V$uOTlW2hrXNkqC3IYF(N<5KLbHb*$j=kqf!v<>A4d4)B>xCWCvyY;p+@I; zs$s>?G1>dR-Q<)y`Fk=AiK51;{MZ!A$K;&$L8GbU+vb}j*0&2ofoIL3Mzdph@gmuK zij+)k)r!+-<{~HldKx*g-8-H0zF*Vx4ds2m#y;5fhWmBC{OIfg5?e@qkyYP$gIvq3 zL+yIeyft|d1qS!QA4=#mJ$V6q83XNGnG2%SC6R{d`Nu_e{lyG2jBiwz-4dZXdS=Ro z?5I}GP@#JH%;f7~9Au#z>*58_%@zH0rmE~Zh#gEoyN|>0_;)?{O;yo-j6dlXs*hcA z|7=ulJie;WzDY}a`?%&xw{{*p{zEsIrOGDNb|#8^cydjDI!l#L-fidkZpCmszOD<* z_IKNTk^49=9^cRlW>dRl0XrsRft&j8+0;0>4kg@Mdf*(gpB38I_-%b@&VOnAj&3oR z8n=BL$y1p>cN4D9%~3h@k-79vDJj$%-zfB+NV71IO;?(YnXkn>l|4y0q1varKlRFa zBnG5R(%pTXc793;Y!Bh+;V-z?x!ydxo;RPo!psu3fce`b4^ZICFcGfPCXi#9sl_VD zY5T(@LW8HlL3GVwd3Qy2+bU04R|5!jB8;`b_}fH8sh<$%H4>=-*ucpICib4YC35PMZ_&DfJjhxx zzYa@OId%9VRWP}6d_KbT_(eVutnSPZI9?G~i2ZPpT7SDlWz-ul)1O^4lGuVq55R+Z4d>_5CkG^uEp1#{n$ljp_`Ct%T3kX;Y(?{jl5E8ysF+HBv_w^R2V$&YpO`;t z5oDg^(KR&f1#N8;{^YHxWtzk_^kpKe|=x?Y4z=;=mU!I zbm*S$$=4issd) z-%9Q=p*mSq*Ln+IA#b>x#$ZM9Wzk^$&T`74KJ$d=>?=sfl)jurPhFAZNG8Afl0a5{ l`@cQTraQ0n*Z!B6ezRk2+4VOoRa9~(_BEbEN3Bv}{}175NEHA8