I am unable to figure the getwork api I called bitcoind getwork slightly earlier in the day and this is what I got:

{
    "midstate" : "6d8b2d759123e7311c552f0c99f6d520378062ac7a14fb11f6d433779d282faf",
    "data" : "00000002c2bf65e9637a1c11955c2ba1c45c9bffad322d4fa0d9529e0000014300000000e9587c30863f5f410ea9d0611d3da6b7d0afd390b4b8e33cd71297c9d20dc74651ad7ea71a01616400000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000",
    "hash1" : "00000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000010000",
    "target" : "0000000000000000000000000000000000000000000000646101000000000000"
}


So for the time being lets throw away the midstate which I will not be using since I am only trying to understand.
So now doing the 32 bit byteswap on the data I get this:

Data
02000000 e965bfc2111c7a63a12b5c95ff9b5cc4 4f2d32ad9e52d9a04301000000000000 307c58e9415f3f8661d0a90eb7a63d1d90d3afd03ce3b8b4c99712d746c70dd2 a77ead51 6461011a 00000000


Now I am unable to figure out how to actually read this information. According to the wiki, the first 4 bytes are version. Here the first 4 bytes are version. 

Version:
02000000


Isnt it supposed to be 2. The above is a really large number in big endian.

Now the previuos hash block:

Hash:
e965bfc2111c7a63a12b5c95ff9b5cc44f2d32ad9e52d9a04301000000000000


I am unable to find this hash anywhere on blockexplorer or block chain info? I tried to change the endianess once again but to no avail.

Finally I left the merkle root out and tried to confirm with the utc time:

Time:
a77ead51


Which corresponds to the year 2081. What exactly am I doing wrong here?
Isnt it supposed to be 2. The above is a really large number in big endian.


It's a small number in big endian. Think about it; big digits at the end.


  Now the previuos hash block


I don't know why Bitcoin does this, but block hashes are stored in normal order internally, then byte-reversed before displaying them. 

&gt;&gt;&gt; s="e965bfc2111c7a63a12b5c95ff9b5cc44f2d32ad9e52d9a04301000000000000"
&gt;&gt;&gt; import binascii
&gt;&gt;&gt; s=binascii.unhexlify(s)
&gt;&gt;&gt; s=s[::-1]
&gt;&gt;&gt; s=binascii.hexlify(s)
&gt;&gt;&gt; s


'0000000000000143a0d9529ead322d4fc45c9bff955c2ba1637a1c11c2bf65e9'


  Time:
  a77ead51


Use big endian. I got 1370324647 using this tool, then converted to 04 Jun 2013 with this tool.