code: public byte[] getKeyFromRawBlock (ByteBuffer rawByteBuffer)  {
  	rawByteBuffer.mark();
  	byte[] magicNo=new byte[4];
  	byte[] hashMerkleRoot=new byte[32];
  	byte[] hashPrevBlock=new byte[32];
  	// magic no (skip)
  	rawByteBuffer.get(magicNo,0,4);
  	// blocksize (skip)
  	rawByteBuffer.getInt();
  	// version (skip)
  	rawByteBuffer.getInt();
  	// hashPrevBlock
  	rawByteBuffer.get(hashPrevBlock,0,32);
  	// hashMerkleRoot
  	rawByteBuffer.get(hashMerkleRoot,0,32);
  	byte[] result=new byte[hashMerkleRoot.length+hashPrevBlock.length];
  	for (int i=0;i<hashMerkleRoot.length;i++) {
  		result[i]=hashMerkleRoot[i];
  	}
  	for (int j=0;j<hashPrevBlock.length;j++) {
  		result[j+hashMerkleRoot.length]=hashPrevBlock[j];
  	}
  	rawByteBuffer.reset();
  	return result;
  }
docs: This function is used to read from a raw Bitcoin block some identifier. Note: Does not change ByteBuffer position
  
  @param rawByteBuffer ByteBuffer as read by readRawBlock
  @return byte array containing hashMerkleRoot and prevHashBlock