Read the original article:How to use Java ByteBuffer in Arkts
Context
The question was: what is the TypeScript equivalent of Java's ByteBuffer? In Java,ByteBuffer is used for low-level reading and writing of binary data in memory.In TypeScript,similar functionality is achived using ArrayBuffer and DataView.
Description
To replicate ByteBuffer behavior in TypeScript, a class was created that initializes an ArrayBuffer and a DataView over it in the constructor.The class supports appending data to the end of the buffer via a putBytes method, while the getBuffer method returns the entire underlying ArrayBuffer
Solution
Here is the TypeScript implementation:
class ByteWriter {
private buffer : ArrayBuffer
private view : DataView
private offset : number
constructor(size : number) {
this.buffer = new ArrayBuffer(size)
this.view = new DataView(this.buffer)
this.offset = 0
}
getBuffer() : ArrayBuffer {
return this.buffer.slice(0,this.offset)
}
putBytes(data : Uint8Array) {
const uint8View = new Uint8Array(this.buffer)
uint8View.set(data,this.offset)
this.offset += data.length
}
}
Key Takeaways
- Java's ByteBuffer corresponds to ArrayBuffer and DataView in TypeScript
- The buffer grows dynamically as needed when new data is appended
- putBytes appends data at the current end position
- getBuffer returns the entire buffer, including any unused space at the end
Top comments (0)