CentralMine.NET.Utils.ByteSwapIntegers C# (CSharp) Method

ByteSwapIntegers() public static method

public static ByteSwapIntegers ( byte buffer ) : void
buffer byte
return void
        public static void ByteSwapIntegers(byte[] buffer)
        {
            uint[] ints = new uint[16];
            Buffer.BlockCopy(buffer, 0, ints, 0, 32);
            for (int i = 0; i < ints.Length; i++)
                ints[i] = MinerLib_cs.Scrypt.ByteReverse(ints[i]);
            Buffer.BlockCopy(ints, 0, buffer, 0, 32);
        }

Usage Example

        public void GenerateWork()
        {
            byte[] en2b = new byte[mExtraNonceSize];
            for (int i = 0; i < mExtraNonceSize; i++)
            {
                ulong mask   = (ulong)0xFF << (i * 8);
                ulong masked = (mExtraNonceB & mask) >> (i * 8);
                en2b[mExtraNonceSize - (1 + i)] = (byte)masked;
            }
            mExtraNonceB++;

            mExtraNonce2 = Utils.ByteArrayToHexString(en2b);
            string coinbase = mCoinBaseA + mExtraNonce + mExtraNonce2 + mCoinBaseB;

            byte[] cb         = Utils.HexStringToByteArray(coinbase);
            byte[] cbHash     = MinerLib_cs.Scrypt.SHA2562(cb);
            string merkleRoot = Utils.ByteArrayToHexString(cbHash);

            foreach (string merkle in mMerkleBranch)
            {
                byte[] hashData   = Utils.HexStringToByteArray(merkleRoot + merkle);
                byte[] merkleHash = MinerLib_cs.Scrypt.SHA2562(hashData);
                merkleRoot = Utils.ByteArrayToHexString(merkleHash);
            }

            // byteswap the merkle root section
            byte[] merkleData = Utils.HexStringToByteArray(merkleRoot);
            Utils.ByteSwapIntegers(merkleData);
            merkleRoot = Utils.ByteArrayToHexString(merkleData);


            uint time = (uint)Utils.UnixTime() + 120;

            mTimeStr = Utils.UIntToHexString(time);

            strData = mVersion + mPrevHash + merkleRoot + mTimeStr + mDifficulty + "00000000" + "000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000";
            data    = Utils.HexStringToByteArray(strData);
        }