@Nullable
	public Long getLongValue(@LongFormat final int formatType,
							 @IntRange(from = 0) final int offset) {
		if ((offset + getTypeLen(formatType)) > size()) return null;

		return switch (formatType) {
			case FORMAT_UINT32_LE -> unsignedBytesToLong(
					mValue[offset],
					mValue[offset + 1],
					mValue[offset + 2],
					mValue[offset + 3]
			);
			case FORMAT_UINT32_BE -> unsignedBytesToLong(
					mValue[offset + 3],
					mValue[offset + 2],
					mValue[offset + 1],
					mValue[offset]
			);
			case FORMAT_SINT32_LE -> unsignedToSigned(unsignedBytesToLong(
					mValue[offset],
					mValue[offset + 1],
					mValue[offset + 2],
					mValue[offset + 3]
			), 32);
			case FORMAT_SINT32_BE -> unsignedToSigned(unsignedBytesToLong(
					mValue[offset + 3],
					mValue[offset + 2],
					mValue[offset + 1],
					mValue[offset]
			), 32);
			default -> null;
		};

	}
@Test
	public void getValue_UINT32_BE_big() {
		final Data data = new Data(new byte[] { (byte) 0xF0, 0x00, 0x00, 0x01 });
		final long value = data.getLongValue(Data.FORMAT_UINT32_BE, 0);
		assertEquals(0xF0000001L, value);
	}