Merge pull request #550 from JMarlin/master
#549 changed switch/case table to cascaded range checks
This commit is contained in:
commit
a3edf675f8
|
@ -12,7 +12,7 @@
|
|||
|
||||
DWORD CMemoryLabel::AsciiToHex (char * HexValue)
|
||||
{
|
||||
DWORD Count, Finish, Value = 0;
|
||||
DWORD Count, Finish, Current, Value = 0;
|
||||
|
||||
Finish = strlen(HexValue);
|
||||
if (Finish > 8 )
|
||||
|
@ -23,33 +23,25 @@ DWORD CMemoryLabel::AsciiToHex (char * HexValue)
|
|||
for (Count = 0; Count < Finish; Count++)
|
||||
{
|
||||
Value = (Value << 4);
|
||||
switch ( HexValue[Count] )
|
||||
Current = HexValue[Count];
|
||||
if(Current >= '0' && Current <= '9')
|
||||
{
|
||||
case '0': break;
|
||||
case '1': Value += 1; break;
|
||||
case '2': Value += 2; break;
|
||||
case '3': Value += 3; break;
|
||||
case '4': Value += 4; break;
|
||||
case '5': Value += 5; break;
|
||||
case '6': Value += 6; break;
|
||||
case '7': Value += 7; break;
|
||||
case '8': Value += 8; break;
|
||||
case '9': Value += 9; break;
|
||||
case 'A': Value += 10; break;
|
||||
case 'a': Value += 10; break;
|
||||
case 'B': Value += 11; break;
|
||||
case 'b': Value += 11; break;
|
||||
case 'C': Value += 12; break;
|
||||
case 'c': Value += 12; break;
|
||||
case 'D': Value += 13; break;
|
||||
case 'd': Value += 13; break;
|
||||
case 'E': Value += 14; break;
|
||||
case 'e': Value += 14; break;
|
||||
case 'F': Value += 15; break;
|
||||
case 'f': Value += 15; break;
|
||||
default:
|
||||
Value = (Value >> 4);
|
||||
Count = Finish;
|
||||
Value += Current - '0';
|
||||
}
|
||||
else
|
||||
{
|
||||
if(Current < 'A')
|
||||
Current += 'A' - 'a';
|
||||
|
||||
if (Current >= 'A' && Current <= 'F')
|
||||
{
|
||||
Value += Current + 10 - 'A';
|
||||
}
|
||||
else
|
||||
{
|
||||
Value = (Value >> 4);
|
||||
Count = Finish;
|
||||
}
|
||||
}
|
||||
}
|
||||
return Value;
|
||||
|
|
Loading…
Reference in New Issue