
    pub fn read_i32_be(&self, offset: usize) -> i32 {
        i32::from_be_bytes(self.piece(offset, size_of::<i32>()).try_into().unwrap())
    }

    pub fn read_u32_le(&self, offset: usize) -> u32 {
        u32::from_le_bytes(self.piece(offset, size_of::<u32>()).try_into().unwrap())
    }

    pub fn read_u32_be(&self, offset: usize) -> u32 {
        u32::from_be_bytes(self.piece(offset, size_of::<u32>()).try_into().unwrap())
    }

    pub fn read_i64_le(&self, offset: usize) -> i64 {
        i64::from_le_bytes(self.piece(offset, size_of::<i64>()).try_into().unwrap())