Я пытаюсь разместить два адреса и порт в массиве, а затем, как видно из кода, преобразовать в uint16 для дальнейшей работы, но я не получаю желаемого результата на выходе. Я знаю, что в моем коде всего 4 байта, и 10 нужно поменять местами.
s, d := net.IP{172, 16, 100, 11}, net.IP{10, 0, 88, 11}
var sp uint16 = 54876
//var dp uint16 = 445
var spByte = make([]byte, 2)
binary.BigEndian.PutUint16(spByte, sp)
var x = make([]byte, 10) // [172 16 100 11 10 0 88 11 214 92]
copy(x[:4], s)
copy(x[4:], d)
copy(x[8:], spByte)
ret := binary.BigEndian.Uint32(x)
var a, z uint16
a = uint16(ret >> 16)
z = uint16(ret & 0xFFFF)
newret := (uint32(a) << 16) | uint32(z)
var xs = make([]byte,10) // [172 16 100 11 0 0 0 0 0 0]
binary.BigEndian.PutUint32(xs,newret)
Я пытаюсь получить число из массива [172 16 100 11 10 0 88 11 214 92], а затем восстановить указанный массив с того же номера.