Я хочу добавить размер вектора в буфер. Но я точно не знаю, какой тип размера. В конце концов, std :: size_t не может быть фиксированным. На мой взгляд, я намерен использовать uint64_t вместо этого. Затем буфер хотел бы это:О сериализации вектора <int32_t> в буфере TCP?
8 bytes length | 4 bytes element1 | 4 bytes element2 | ... |
Теперь вопрос uint64_t не означает зЬй :: size_t. Любые лучшие идеи будут оценены.
Я не понимаю, о чем вы просите. Если вы хотите использовать четыре байта или восемь байтов или что угодно, чтобы закодировать размер в какой-то определенной форме или формате, просто сделайте это. В чем проблема? Вы можете использовать 'size_t' для хранения размера - какая разница, какой тип вы используете до тех пор, пока он может удерживать размер? –
Кроме того, чтобы быть портативным, убедитесь, что вы получаете предсказуемую достоверность, например. используйте htonl() для 32-битных объектов перед отправкой их в сокет. –
@David Schwartz Вопрос в том, что я не знаю, каков размер вектора. Я не могу просто использовать переменную uint64_t для хранения этого размера, а затем записать эту переменную в буфер. – NiklausTseng