VGrabko
@VGrabko
Golang, Php, Js

Можно ли правильнее такое сделать?

Задача у меня такова:
У меня есть 100500 элементов key, value []byte
Мне всё это необходимо собрать в 1 []byte и с лёгкостью декодиривать в 100500 key, value []byte.

Сейчас достиг базового уровня. Ходят по сети байты в таком формате
type D struct {
	C          uint8
	Db         string
	Key, Value []byte
}


с указателями длины в первых байтах.

Необходимо в Value запихнуть:
type Map struct {
	Key, Value []byte
}

Дошел до алгоритма такого вида
9|12|key|value где первые два элемента говорят длина ключа и значения. Потом я вытаскиваю со слайса длину и перехожу к следующему указателю

UPD.
Написал не очень понятно так что код тестов готового приложу
func EncodeDecodeTest(t *testing.T) {

	d := []uint8{Get, Set, Up, Del}
	for key := range d {
		g := D{}
		g.C = d[key]
		g.Db = "db"
		g.Key = []byte("sdfsdfsdfsdfsdf")
		g.Value = []byte("dsdfsdfs35345dfsdf")
		gg := Decode(Encode(g))

		if g.C != gg.C {
			t.Error(g.C, gg.C)
		}
		if g.Db != gg.Db {
			t.Error(g.Db, gg.Db)
		}
		if !slice.ByteSame(g.Key, gg.Key) {
			t.Error(g.Key, gg.Key)
		}
		if !slice.ByteSame(g.Value, gg.Value) {
			t.Error(g.Value, gg.Value)
		}

	}
}
  • Вопрос задан
  • 390 просмотров
Решения вопроса 1
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы