1- export function encodeUint32 ( value : number ) : [ number , number , number , number ] {
2- return [ ( value >>> 24 ) & 0xff , ( value >> 16 ) & 0xff , ( value >> 8 ) & 0xff , value & 0xff ] ;
1+ import { Writable } from "./Writable" ;
2+
3+ export function encodeUint32 < T extends Writable < number > > ( rv : T , value : number ) : void {
4+ rv . push ( ( value >>> 24 ) & 0xff , ( value >> 16 ) & 0xff , ( value >> 8 ) & 0xff , value & 0xff ) ;
35}
46
57export function decodeUint32 ( b1 : number , b2 : number , b3 : number , b4 : number ) {
@@ -15,12 +17,12 @@ export function decodeInt32(b1: number, b2: number, b3: number, b4: number): num
1517}
1618
1719// the actual range is int52 (a.k.a. safe integer)
18- export function encodeInt64 ( value : number ) : [ number , number , number , number , number , number , number , number ] {
20+ export function encodeInt64 < T extends Writable < number > > ( rv : T , value : number ) : void {
1921 if ( value < 0 ) {
2022 const absMinusOne = - value - 1 ;
2123 const high = absMinusOne / 0x100000000 ;
2224 const low = absMinusOne & 0xffffffff ;
23- return [
25+ rv . push (
2426 ( ( ( high >> 24 ) & 0xff ) ^ 0xff ) | 0x80 ,
2527 ( ( high >> 16 ) & 0xff ) ^ 0xff ,
2628 ( ( high >> 8 ) & 0xff ) ^ 0xff ,
@@ -29,11 +31,11 @@ export function encodeInt64(value: number): [number, number, number, number, num
2931 ( ( low >> 16 ) & 0xff ) ^ 0xff ,
3032 ( ( low >> 8 ) & 0xff ) ^ 0xff ,
3133 ( low & 0xff ) ^ 0xff ,
32- ] ;
34+ ) ;
3335 } else {
3436 const high = value / 0x100000000 ;
3537 const low = value & 0xffffffff ;
36- return [
38+ rv . push (
3739 ( high >> 24 ) & 0xff ,
3840 ( high >> 16 ) & 0xff ,
3941 ( high >> 8 ) & 0xff ,
@@ -42,7 +44,7 @@ export function encodeInt64(value: number): [number, number, number, number, num
4244 ( low >> 16 ) & 0xff ,
4345 ( low >> 8 ) & 0xff ,
4446 low & 0xff ,
45- ] ;
47+ ) ;
4648 }
4749}
4850
@@ -82,11 +84,11 @@ export function decodeInt64(
8284 ) ;
8385}
8486
85- export function encodeUint64 ( value : number ) : [ number , number , number , number , number , number , number , number ] {
87+ export function encodeUint64 < T extends Writable < number > > ( rv : T , value : number ) : void {
8688 const high = value / 0x100000000 ;
8789 const low = value & 0xffffffff ;
8890
89- return [
91+ rv . push (
9092 ( high >> 24 ) & 0xff ,
9193 ( high >> 16 ) & 0xff ,
9294 ( high >> 8 ) & 0xff ,
@@ -95,5 +97,5 @@ export function encodeUint64(value: number): [number, number, number, number, nu
9597 ( low >> 16 ) & 0xff ,
9698 ( low >> 8 ) & 0xff ,
9799 low & 0xff ,
98- ] ;
100+ ) ;
99101}
0 commit comments