MatFileHeader header = MatFileHeader.createHeader(); char[] dest = new char[116]; char[] src = header.getDescription().toCharArray(); System.arraycopy(src, 0, dest, 0, src.length); byte[] endianIndicator = header.getEndianIndicator(); int version = header.getVersion(); buf.put( (byte)(version >> 8) ); buf.put( (byte)version );
/** * A factory. Creates new <code>MatFileHeader</code> instance with default header values: * <ul> * <li>MAT-file is 5.0 version</li> * <li>version is set to 0x0100</li> * <li>no byte-swapping ("IM")</li> * </ul> * * @return - new <code>MatFileHeader</code> instance */ public static MatFileHeader createHeader() { return new MatFileHeader( DEFAULT_DESCRIPTIVE_TEXT + (new Date()).toString(), DEFAULT_VERSION, DEFAULT_ENDIAN_INDICATOR); }
/** * Parses a MatFileHeader from its desciption and the raw bytes of the version and endian indicator. * * @param description - descriptive test * @param bversion - 2-byte array containing the version (raw from a MAT-File) * @param endianIndicator - 2-byte array containing the endian indicator (raw from a MAT-File( * @return */ public static MatFileHeader parseFrom(String description, byte[] bversion, byte[] endianIndicator) { int version; ByteOrder byteOrder = parseByteOrder(endianIndicator); if (byteOrder == ByteOrder.BIG_ENDIAN) { version = bversion[0] & 0xff | bversion[1] << 8; } else if (byteOrder == ByteOrder.LITTLE_ENDIAN) { version = bversion[1] & 0xff | bversion[0] << 8; } else { throw new IllegalArgumentException("Unknown byteOrder " + byteOrder); } return new MatFileHeader(description, version, byteOrder); }
String[] parts = hdr.getDescription().split(","); // Break header information into its parts String endianBytes = new String(hdr.getEndianIndicator(), UTF_8); // Retrieve endian bytes and convert to string
/** Reads a bare set of bytes. */ public static Map<String, MLArray> readBare(MatFileHeader header, ByteBuffer buffer) throws IOException { MatFileReader reader = new MatFileReader(); reader.matFileHeader = header; buffer.order(header.getByteOrder()); reader.readData(buffer); return reader.data; }
matFileHeader = MatFileHeader.parseFrom(description, bversion, endianIndicator); buf.order(matFileHeader.getByteOrder());
String[] parts = hdr.getDescription().split(","); // Break header information into its parts String endianBytes = new String(hdr.getEndianIndicator(), UTF_8); // Retrieve endian bytes and convert to string
/** Reads a bare set of bytes. */ public static Map<String, MLArray> readBare(MatFileHeader header, ByteBuffer buffer) throws IOException { MatFileReader reader = new MatFileReader(); reader.matFileHeader = header; buffer.order(header.getByteOrder()); reader.readData(buffer); return reader.data; }
matFileHeader = MatFileHeader.parseFrom(description, bversion, endianIndicator); buf.order(matFileHeader.getByteOrder());
MatFileHeader header = MatFileHeader.createHeader(); char[] dest = new char[116]; char[] src = header.getDescription().toCharArray(); System.arraycopy(src, 0, dest, 0, src.length); byte[] endianIndicator = header.getEndianIndicator(); int version = header.getVersion(); buf.put( (byte)(version >> 8) ); buf.put( (byte)version );
String[] parts = hdr.getDescription().split(","); // Break header information into its parts String endianBytes = new String(hdr.getEndianIndicator(), UTF_8); // Retrieve endian bytes and convert to string
/** * A factory. Creates new <code>MatFileHeader</code> instance with default header values: * <ul> * <li>MAT-file is 5.0 version</li> * <li>version is set to 0x0100</li> * <li>no byte-swapping ("IM")</li> * </ul> * * @return - new <code>MatFileHeader</code> instance */ public static MatFileHeader createHeader() { return new MatFileHeader(DEFAULT_DESCRIPTIVE_TEXT + (new Date()).toString(), DEFAULT_VERSION, DEFAULT_ENDIAN); }
/** * Parses a MatFileHeader from its desciption and the raw bytes of the version and endian indicator. * * @param description - descriptive test * @param bversion - 2-byte array containing the version (raw from a MAT-File) * @param endianIndicator - 2-byte array containing the endian indicator (raw from a MAT-File( * @return */ public static MatFileHeader parseFrom(String description, byte[] bversion, byte[] endianIndicator) { int version; ByteOrder byteOrder = parseByteOrder(endianIndicator); if (byteOrder == ByteOrder.BIG_ENDIAN) { version = bversion[0] & 0xff | bversion[1] << 8; } else if (byteOrder == ByteOrder.LITTLE_ENDIAN) { version = bversion[1] & 0xff | bversion[0] << 8; } else { throw new IllegalArgumentException("Unknown byteOrder " + byteOrder); } return new MatFileHeader(description, version, byteOrder); }
/** * Reads Matrix name. * * Modifies <code>buf</code> position. * * @param buf <code>ByteBuffer</code> * @return name <code>String</code> * @throws IOException if reading from buffer fails */ private static String readName(ByteBuffer buf, MatFileHeader header) throws IOException { ISMatTag tag = new ISMatTag(buf); return tag.readToString(header.getByteOrder()); }
/** * Writes MAT-file header into <code>OutputStream</code> * @param os <code>OutputStream</code> * @throws IOException */ private void writeHeader(WritableByteChannel channel) throws IOException { //write descriptive text MatFileHeader header = MatFileHeader.createHeader(); char[] dest = new char[116]; char[] src = header.getDescription().toCharArray(); System.arraycopy(src, 0, dest, 0, src.length); byte[] endianIndicator = header.getEndianIndicator(); ByteBuffer buf = ByteBuffer.allocateDirect(dest.length * 2 /* Char size */ + 2 + endianIndicator.length); for (int i = 0; i < dest.length; i++) { buf.put((byte) dest[i]); } //write subsyst data offset buf.position(buf.position() + 8); //write version int version = header.getVersion(); buf.put((byte) (version >> 8)); buf.put((byte) version); buf.put(endianIndicator); buf.flip(); channel.write(buf); }
/** * A factory. Creates new <code>MatFileHeader</code> instance with default header values: * <ul> * <li>MAT-file is 5.0 version</li> * <li>version is set to 0x0100</li> * <li>no byte-swapping ("IM")</li> * </ul> * * @return - new <code>MatFileHeader</code> instance */ public static MatFileHeader createHeader() { return new MatFileHeader( DEFAULT_DESCRIPTIVE_TEXT + (new Date()).toString(), DEFAULT_VERSION, DEFAULT_ENDIAN_INDICATOR); }
/** * Reads Matrix name. * * Modifies <code>buf</code> position. * * @param buf <code>ByteBuffer</code> * @return name <code>String</code> * @throws IOException if reading from buffer fails */ private static String readName(ByteBuffer buf, MatFileHeader header) throws IOException { ISMatTag tag = new ISMatTag(buf); return tag.readToString(header.getByteOrder()); }
/** * Writes MAT-file header into <code>OutputStream</code> * @param os <code>OutputStream</code> * @throws IOException */ private void writeHeader(WritableByteChannel channel) throws IOException { //write descriptive text MatFileHeader header = MatFileHeader.createHeader(); char[] dest = new char[116]; char[] src = header.getDescription().toCharArray(); System.arraycopy(src, 0, dest, 0, src.length); byte[] endianIndicator = header.getEndianIndicator(); ByteBuffer buf = ByteBuffer.allocateDirect(dest.length * 2 /* Char size */ + 2 + endianIndicator.length); for (int i = 0; i < dest.length; i++) { buf.put((byte) dest[i]); } //write subsyst data offset buf.position(buf.position() + 8); //write version int version = header.getVersion(); buf.put((byte) (version >> 8)); buf.put((byte) version); buf.put(endianIndicator); buf.flip(); channel.write(buf); headerWritten = true; }
/** * A factory. Creates new <code>MatFileHeader</code> instance with default header values: * <ul> * <li>MAT-file is 5.0 version</li> * <li>version is set to 0x0100</li> * <li>no byte-swapping ("IM")</li> * </ul> * * @return - new <code>MatFileHeader</code> instance */ public static MatFileHeader createHeader() { return new MatFileHeader(DEFAULT_DESCRIPTIVE_TEXT + (new Date()).toString(), DEFAULT_VERSION, DEFAULT_ENDIAN); }
ByteBuffer mcosDataBuf = ((MLUInt8) mcosInfo.get(0)).getRealByteBuffer(); mcosDataBuf.order(matFile.getMatFileHeader().getByteOrder());