77 "fmt"
88)
99
10+ // EncodeString encodes a string to a byte array
1011func EncodeString (s string ) ([]byte , error ) {
1112 b := new (bytes.Buffer )
1213 err := EncodeStringToBuffer (s , b )
@@ -17,16 +18,19 @@ func EncodeString(s string) ([]byte, error) {
1718 return b .Bytes (), nil
1819}
1920
21+ // DecodeString decodes a string from a byte array
2022func DecodeString (buf []byte ) (string , error ) {
2123 b := bytes .NewBuffer (buf )
2224 return DecodeStringFromBuffer (b )
2325}
2426
27+ // EncodeStringToBuffer encodes a string to a buffer
2528func EncodeStringToBuffer (s string , buffer * bytes.Buffer ) error {
2629 sb := []byte (s )
2730 return EncodeBytesToBuffer (sb , buffer )
2831}
2932
33+ // DecodeStringFromBuffer decodes a string from a buffer
3034func DecodeStringFromBuffer (buffer * bytes.Buffer ) (string , error ) {
3135 sb , err := DecodeBytesFromBuffer (buffer )
3236 if err != nil {
@@ -36,6 +40,7 @@ func DecodeStringFromBuffer(buffer *bytes.Buffer) (string, error) {
3640 return string (sb ), nil
3741}
3842
43+ // EncodeBytesToBuffer encodes a byte array to a buffer
3944func EncodeBytesToBuffer (b []byte , buffer * bytes.Buffer ) error {
4045 err := binary .Write (buffer , binary .BigEndian , uint16 (len (b )))
4146 if err != nil {
@@ -55,6 +60,7 @@ func EncodeBytesToBuffer(b []byte, buffer *bytes.Buffer) error {
5560 return nil
5661}
5762
63+ // DecodeBytesFromBuffer decodes a byte array from a buffer
5864func DecodeBytesFromBuffer (buffer * bytes.Buffer ) ([]byte , error ) {
5965 var bLen uint16
6066 err := binary .Read (buffer , binary .BigEndian , & bLen )
@@ -78,13 +84,16 @@ func DecodeBytesFromBuffer(buffer *bytes.Buffer) ([]byte, error) {
7884 return b , nil
7985}
8086
87+ // EncodeNumberToBuffer encodes a number to a buffer
8188func EncodeNumberToBuffer (n interface {}, buffer * bytes.Buffer ) error {
8289 if err := binary .Write (buffer , binary .BigEndian , n ); err != nil {
8390 panic (err )
8491 }
8592 return nil
8693}
8794
95+ // DecodeNumberFromBuffer decodes a number from a buffer
96+ // Note that nPointer must be a pointer to the type of the number
8897func DecodeNumberFromBuffer (nPointer interface {}, buffer * bytes.Buffer ) error {
8998 if err := binary .Read (buffer , binary .BigEndian , nPointer ); err != nil {
9099 panic (err )
0 commit comments