internal byte[] GetBytes(BlobHandle handle) { int offset = handle.GetHeapOffset(); int bytesRead; int numberOfBytes = Block.PeekCompressedInteger(offset, out bytesRead); if (numberOfBytes == BlobReader.InvalidCompressedInteger) { return(ImmutableArray <byte> .Empty.UnderlyingArray); } return(Block.PeekBytes(offset + bytesRead, numberOfBytes)); }
internal byte[] GetBytes(BlobHandle handle) { if (handle.IsVirtual) { // consider: if we returned an ImmutableArray we wouldn't need to copy return(GetVirtualBlobBytes(handle, unique: true)); } int offset = handle.GetHeapOffset(); int bytesRead; int numberOfBytes = Block.PeekCompressedInteger(offset, out bytesRead); if (numberOfBytes == BlobReader.InvalidCompressedInteger) { return(EmptyArray <byte> .Instance); } return(Block.PeekBytes(offset + bytesRead, numberOfBytes)); }
/// <summary> /// Reads bytes starting at the current position. /// </summary> /// <param name="byteCount">The number of bytes to read.</param> /// <returns>The byte array.</returns> /// <exception cref="BadImageFormatException"><paramref name="byteCount"/> bytes not available.</exception> public byte[] ReadBytes(int byteCount) { byte[] bytes = _block.PeekBytes(this.Offset, byteCount); _currentPointer += byteCount; return(bytes); }