public void uitnSerializationTests2() { var v = new uint256("0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20"); var vr = new uint256("201f1e1d1c1b1a191817161514131211100f0e0d0c0b0a090807060504030201"); var bytes = v.ToBytes(); Assert.Equal(0x20, bytes[0]); Assert.Equal(0x01, bytes[31]); var v2 = new uint256(bytes); Assert.Equal(v, v2); Assert.Equal("0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20", v2.ToString()); var bytes2 = new byte[32]; v2.ToBytes(bytes2); var v3 = new uint256(bytes2, 0, 32); Assert.Equal(v2, v3); Assert.Equal(vr, new uint256(v.ToBytes(false))); v.ToBytes(bytes, false); Assert.Equal(vr, new uint256(bytes)); v.ToBytes(bytes); Assert.Equal(vr, new uint256(bytes, false)); Assert.Equal(v, new uint256(Enumerable.Range(0, 32).Select(i => v.GetByte(i)).ToArray())); Assert.Equal(0x1d1e1f20U, v.GetLow32()); Assert.Equal(0x191a1b1c1d1e1f20U, v.GetLow64()); }
public override void ReadWrite(BitcoinStream stream) { var isNewFormat = !stream.Serializing || (nSolutionSize != 0); stream.ReadWrite(ref nVersion); stream.ReadWrite(ref hashPrevBlock); stream.ReadWrite(ref hashMerkleRoot); if (isNewFormat) { stream.ReadWrite(ref nHeight); for (int i = 0; i < vReserved.Length; i++) { uint nReserved = 0; stream.ReadWrite(ref nReserved); vReserved[i] = nReserved; } } stream.ReadWrite(ref nTime); stream.ReadWrite(ref nBits); if (isNewFormat) { stream.ReadWrite(ref nNewNonce); stream.ReadWriteAsVarInt(ref nSolutionSize); if (nSolutionSize > 0) { if (!stream.Serializing) { nSolution = new byte[nSolutionSize]; } stream.ReadWrite(ref nSolution); } } else { nNonce = nNewNonce.GetLow32(); stream.ReadWrite(ref nNonce); nNewNonce = new uint256(nNonce); } }