OSDN Git Service

5e1bdf6b649630a075b8d119fb56749c38354fc8
[mimic/MiMicSDK.git] / lib / src / mimicvm / NyLPC_mimicvm_utils.c
1 #include "NyLPC_mimicvm_utils_protected.h"\r
2 /**\r
3  * i_txtを16進数に変換する。\r
4  * @param i_txt\r
5  * テキスト形式の16進数。[a-f0-9]+であること\r
6  * @param i_num\r
7  * i_txtの長さ。2,4,8のいずれかであること。\r
8  * @param out\r
9  * 出力値を格納するメモリアドレス。\r
10  * i_numにより、必要なサイズが変化する。\r
11  *\r
12  */\r
13 NyLPC_TBool NyLPC_mimicvm_txt2UInt(const NyLPC_TChar* i_txt,NyLPC_TUInt8 i_num,void* out)\r
14 {\r
15     NyLPC_TUInt32 ret=0;\r
16     NyLPC_TChar c;\r
17     int i;\r
18 \r
19     for(i=0;i<i_num;i++){\r
20         c=(*(i_txt+i));\r
21         if('f'>=c && c>='a'){\r
22             c=c-(NyLPC_TUInt8)'a'+10;\r
23         }else if('9'>=c && c>='0'){\r
24             c-=(NyLPC_TUInt8)'0';\r
25         }else{\r
26             return NyLPC_TBool_FALSE;\r
27         }\r
28         ret=(ret<<4)|c;\r
29     }\r
30     //2,4,8だけ。\r
31     switch(i_num){\r
32     case 2:\r
33         *((NyLPC_TUInt8*)out)=(NyLPC_TUInt8)ret;\r
34         break;\r
35     case 4:\r
36         *((NyLPC_TUInt16*)out)=(NyLPC_TUInt16)ret;\r
37         break;\r
38     case 8:\r
39         *((NyLPC_TUInt32*)out)=(NyLPC_TUInt32)ret;\r
40         break;\r
41     default:\r
42         return NyLPC_TBool_FALSE;\r
43     }\r
44     return NyLPC_TBool_TRUE;\r
45 }\r
46 \r