package com.coding2017.jvm.loader; import com.coding2017.jvm.util.ByteUtil; public class ByteCodeIterator { private byte[] data; private int pos; public ByteCodeIterator(byte[] data) { this.data = data; pos = 0; } public void skip(int n) { pos += n; } public int nextU1ToInt() { return nextByteN(1)[0]; } public int nextU2ToInt() { return ByteUtil.bytesToInt(nextByteN(2)); } public String nextU4ToString() { return ByteUtil.byteToHexString(nextByteN(4)); } public byte[] nextByteN(int n) { byte[] bytes = new byte[n]; for (int i = 0; i < n; i++) { bytes[i] = data[pos++]; } return bytes; } public int nextU4ToInt() { return ByteUtil.bytesToInt(nextByteN(4)); } public String nextUxToHexString(int len) { return ByteUtil.byteToHexString(nextByteN(len)); } }