lib-utils-ts
Version:
<img src="https://img.shields.io/npm/v/lib-utils-ts"/> <img src="https://img.shields.io/snyk/vulnerabilities/npm/lib-utils-ts"/> <img src="https://img.shields.io/npm/l/lib-utils-ts"/> <img src="https://img.shields.io/github/languages/top/devGnode/lib-util
70 lines (51 loc) • 2 kB
text/typescript
import {Reader} from "../../file/Reader";
import {InputStream} from "../../file/InputStream";
import {Byte} from "../Byte";
import {UnsupportedOperationException} from "../../Exception";
import {Word} from "../Word";
import {Convert} from "../Convert";
import {Int8} from "../Int8";
import {Int16} from "../Int16";
import {Dword} from "../Dword";
import {Int32} from "../Int32";
import {Float} from "../Float";
import {Objects} from "../../type/Objects";
import {Uint8} from "../Uint8";
import {Uint16} from "../Uint16";
import {Qword} from "../Qword";
import {Double} from "../Double";
/**
*
*/
export class BinaryReader extends Reader{
private readonly ins:InputStream;
private offset:number = 0;
constructor(ins:InputStream) {
super();
this.ins = Objects.requireNotNull(ins);
}
public next():number{
try{return this.ins.read();}catch (e) {
return -1;
}
}
public nextBytes(bytes:number[], len:number ):number[]{
this.ins.nextBytes(bytes, 0, len);
return bytes;
}
public byte():Byte{return new Byte(this.next());}
public int8():Int8{ return new Byte(this.next()).toInt8(); }
public uint8():Uint8{ return new Uint8(this.byte()); }
public word():Word{return new Word((this.next() << 8) + this.next() );}
public int16():Int16{return this.word().toInt16();}
public uint16():Uint16{ return new Uint16(this.word()); }
public dword():Dword{return new Dword(Convert.arrayToNumber(this.nextBytes([], 4)));}
public int32():Int32{ return this.dword().toInt32(); }
public qword():Qword{ return new Qword(Convert.arrayToNumber(this.nextBytes([], 8))); }
public double():Double{ return new Double(this.qword()); }
public float():Float{return this.dword().toFloat(); }
public close(): void {this.ins.close();}
public read(): number { throw new UnsupportedOperationException(`Disabled`);}
public ready(): boolean {return true;}
}
Object.package(this);