Я немного запутался, что вы даже пытаетесь сделать с
app0[13:15] = []byte(300)
А один байт не может иметь значение 300 , и у вас есть кусок байтов. Я предполагаю, что вы хотите, чтобы значение 300 преобразуется в два байта:
import (
"fmt"
"bytes"
"encoding/binary"
)
func main() {
app0 := []byte("\xff\xe0\x00\x10\x4a\x46\x49\x46\x00\x01\x01\x01\x00\x00\x00\x00\x00\x00")
app0 = append(app0[:13], append(intToBytes(uint16(300)), app0[15:]...)...)
fmt.Println(app0)
}
func intToBytes(i uint16) []byte {
buf := new(bytes.Buffer)
_ = binary.Write(buf, binary.LittleEndian, i)
return buf.Bytes()
}
https://play.golang.org/p/qADHwCCFQG
Хитрость здесь вы должны действительно получить массив байтов, а затем вы можете использовать VARIADIC оператор (...
), а затем append
функция для замены внутренних элементов массива.
да, 300 помещается в два байта. – akonsu