Skip to content

Commit 9ca5ca2

Browse files
committed
wip
1 parent a223e7e commit 9ca5ca2

File tree

1 file changed

+13
-3
lines changed

1 file changed

+13
-3
lines changed

index.js

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,19 +83,29 @@ module.exports = function toBuffer(data, encoding) {
8383
// 8-bit values have no endianness
8484
outputView.setUint8(offset, value);
8585
} else if (elemSize === 2) {
86-
// 16-bit values - write as little-endian
87-
outputView.setUint16(offset, value, true);
86+
// 16-bit values - handle signed vs unsigned
87+
if (value < 0) {
88+
outputView.setInt16(offset, value, true);
89+
} else {
90+
outputView.setUint16(offset, value, true);
91+
}
8892
} else if (elemSize === 4) {
8993
// 32-bit values - check if it's a float
9094
if (typeof value === 'number' && !Number.isInteger(value)) {
9195
outputView.setFloat32(offset, value, true);
96+
} else if (value < 0) {
97+
outputView.setInt32(offset, value, true);
9298
} else {
9399
outputView.setUint32(offset, value, true);
94100
}
95101
} else if (elemSize === 8) {
96102
// 64-bit values - check if it's a BigInt or float
97103
if (typeof value === 'bigint') {
98-
outputView.setBigUint64(offset, value, true);
104+
if (value < 0n) {
105+
outputView.setBigInt64(offset, value, true);
106+
} else {
107+
outputView.setBigUint64(offset, value, true);
108+
}
99109
} else if (typeof value === 'number') {
100110
outputView.setFloat64(offset, value, true);
101111
} else {

0 commit comments

Comments
 (0)