Write both values as hex, side by side, then as bits, e.g.
0B2AA4CC = 0000 1011 0010 1010 1010 0100 1100 1100
0222646835 = 0D455233 = 0000 1101 0100 0101 0101 0010 0011 0011
Do you see the pattern? The bit sequence is inverse (per nibble).
1) take the 8 digit hex number
2) convert each hex digit to the reverse bit sequence value
3) create a 10 digit decimal number from it
4) put all together
8-bit-hex > 10-digit-dec
[EDIT]
Some dense code to show the conversion working.
The nibbles to inverse are looked up by using the lowest nibble of the input value and shifting that input value right for each next nibble. The locked up value is then shifted left to the respective position and set into the target value.
class Program
{
static readonly UInt32[] LOOKUP =
{ 0x0,0x8,0x4,0xC,0x2,0xA,0x6,0xE,0x1,0x9,0x5,0xD,0x3,0xB,0x7,0xF };
static UInt32 Convert8HTo10D(UInt32 val8H)
{
UInt32 val10D = 0x0;
for (int pos = 0; pos < 32; pos += 4, val8H >>= 4) val10D |= LOOKUP[val8H & 0xF] << pos;
return val10D;
}
static void Write8H10D(UInt32 val8H)
{
Console.WriteLine("{0:X08} > {1:D10}", val8H, Convert8HTo10D(val8H));
}
static void Main(string[] args)
{
Write8H10D(0x0B2AA4CC);
Write8H10D(0x00AA62CD);
Write8H10D(0x0A24ACD0);
}
}
This results in
0B2AA4CC > 0222646835
00AA62CD > 0005596219
0A24ACD0 > 0088232880
[/EDIT]
Cheers
Andi