package org.molgenis.matrix.convertors; import java.io.IOException; import java.io.RandomAccessFile; public class DoubleConvertor implements ValueConvertor<Double> { @Override public Double read(String value) { if (value == null) return null; return Double.parseDouble(value); } @Override public String write(Double value) { if (value == null) return null; return value.toString(); } @Override public Double read(RandomAccessFile raf) throws IOException { byte[] arr = new byte[8]; raf.read(arr); double d = byteArrayToDouble(arr); if (d == Double.MAX_VALUE) { return null; } return d; } @Override public Class<Double> getValueType() { return Double.class; } public static double byteArrayToDouble(byte[] arr) { long longBits = 0; for (int i = 0; i < arr.length; i++) { longBits <<= 8; longBits |= (long) arr[i] & 255; } return Double.longBitsToDouble(longBits); } }