public static ReadUInt32 ( byte fromBuffer, int numberOfBits, int readBitOffset ) : uint | ||
fromBuffer | byte | |
numberOfBits | int | |
readBitOffset | int | |
Результат | uint |
public bool ReadInt32(out Int32 result) { if (m_bitLength - m_readPosition < 32) { result = 0; return(false); } result = (Int32)NetBitWriter.ReadUInt32(m_data, 32, m_readPosition); m_readPosition += 32; return(true); }
/// <summary> /// Reads a 64 bit unsigned integer written using Write(UInt64) /// </summary> public UInt64 ReadUInt64() { NetException.Assert(m_bitLength - m_readPosition >= 64, c_readOverflowError); ulong low = NetBitWriter.ReadUInt32(m_data, 32, m_readPosition); m_readPosition += 32; ulong high = NetBitWriter.ReadUInt32(m_data, 32, m_readPosition); ulong retval = low + (high << 32); m_readPosition += 32; return(retval); }
public UInt64 PeekUInt64(int numberOfBits) { NetException.Assert((numberOfBits > 0 && numberOfBits <= 64), "ReadUInt() can only read between 1 and 64 bits"); NetException.Assert(m_bitLength - m_readPosition >= numberOfBits, c_readOverflowError); ulong retval; if (numberOfBits <= 32) { retval = (ulong)NetBitWriter.ReadUInt32(m_data, numberOfBits, m_readPosition); } else { retval = NetBitWriter.ReadUInt32(m_data, 32, m_readPosition); retval |= (UInt64)NetBitWriter.ReadUInt32(m_data, numberOfBits - 32, m_readPosition + 32) << 32; } return(retval); }
public UInt64 PeekUInt64(int numberOfBits) { Debug.Assert((numberOfBits > 0 && numberOfBits <= 64), "ReadUInt() can only read between 1 and 64 bits"); Debug.Assert(m_bitLength - m_readPosition >= numberOfBits, "tried to read past buffer size"); ulong retval; if (numberOfBits <= 32) { retval = (ulong)NetBitWriter.ReadUInt32(Data, numberOfBits, m_readPosition); } else { retval = NetBitWriter.ReadUInt32(Data, 32, m_readPosition); retval |= NetBitWriter.ReadUInt32(Data, numberOfBits - 32, m_readPosition + 32) << 32; } return(retval); }
/// <summary> /// Decrypt an incoming message encrypted with corresponding Encrypt /// </summary> /// <param name="msg">message to decrypt</param> /// <returns>true if successful; false if failed</returns> public override bool Decrypt(NetIncomingMessage msg) { int numEncryptedBytes = msg.LengthBytes - 4; // last 4 bytes is true bit length int blockSize = BlockSize; int numBlocks = numEncryptedBytes / blockSize; if (numBlocks * blockSize != numEncryptedBytes) { return(false); } for (int i = 0; i < numBlocks; i++) { DecryptBlock(msg.m_data, (i * blockSize), m_tmp); Buffer.BlockCopy(m_tmp, 0, msg.m_data, (i * blockSize), m_tmp.Length); } // read 32 bits of true payload length uint realSize = NetBitWriter.ReadUInt32(msg.m_data, 32, (numEncryptedBytes * 8)); msg.m_bitLength = (int)realSize; return(true); }
public UInt32 PeekUInt32() { uint retval = NetBitWriter.ReadUInt32(Data, 32, m_readPosition); return(retval); }