Home || Architecture || Video Search || Visual Search || Scripts || Applications || Important Messages || OGL || Src

BinHex.h

Go to the documentation of this file.
00001 #ifndef Impala_Util_BinHex_h
00002 #define Impala_Util_BinHex_h
00003 
00004 #include "Basis/String.h"
00005 #include "Basis/NativeTypes.h"
00006 
00007 namespace Impala
00008 {
00009 namespace Util
00010 {
00011 
00012 
00013 inline String
00014 Bin2Hex(UInt8* data, size_t dataSize)
00015 {
00016     const char lookup[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
00017                            'A', 'B', 'C', 'D', 'E', 'F'};
00018 
00019     String res;
00020     for (size_t i=0 ; i<dataSize ; i++)
00021     {
00022         Int8 hi = (data[i] & 0xF0) >> 4;
00023         Int8 lo = data[i] & 0x0F;
00024         res += lookup[hi];
00025         res += lookup[lo];
00026     }
00027     return res;
00028 }
00029 
00030 inline UInt8*
00031 Hex2Bin(CString data, size_t& resSize)
00032 {
00033     UInt8* tmp = new UInt8[data.size()];
00034     for (int i=0 ; i<data.size() ; i++)
00035     {
00036         UInt8 res;
00037         switch (data[i])
00038         {
00039         case '0': res = 0; break;
00040         case '1': res = 1; break;
00041         case '2': res = 2; break;
00042         case '3': res = 3; break;
00043         case '4': res = 4; break;
00044         case '5': res = 5; break;
00045         case '6': res = 6; break;
00046         case '7': res = 7; break;
00047         case '8': res = 8; break;
00048         case '9': res = 9; break;
00049         case 'A': res = 10; break;
00050         case 'B': res = 11; break;
00051         case 'C': res = 12; break;
00052         case 'D': res = 13; break;
00053         case 'E': res = 14; break;
00054         case 'F': res = 15; break;
00055         }
00056         tmp[i] = res;
00057     }
00058     resSize = data.size() / 2;
00059     UInt8* res = new UInt8[resSize];
00060     for (int i=0 ; i<resSize ; i++)
00061     {
00062         res[i] = ((tmp[i*2] << 4) & 0xF0) | tmp[i*2+1];
00063     }
00064     delete tmp;
00065     return res;
00066 }
00067 
00068 } // namespace Util
00069 } // namespace Impala
00070 
00071 #endif

Generated on Fri Mar 19 09:31:45 2010 for ImpalaSrc by  doxygen 1.5.1