2013-07-22 14 views
10

Protokolde char/bayt tipinin bulunmasının mümkün olup olmadığını bulamıyorum.Protobuf'ta tek bayt tipi var mı?

Burada çeşitli görebilirsiniz: https://developers.google.com/protocol-buffers/docs/encoding

+6

Sabit olmayan tamsayı türleri değişken uzunluklu kodlama kullanır, bu nedenle 16 bit ve 8 bit tamsayılar için int32 işlevini kullanırsınız ve değişken uzunluklu kodlama bölümünün kullanmadığınız baytları göndermemesini sağlayın. . –

+0

@muistooshort IMHO Yorumunuz cevap kabul edilmelidir. – omikron

cevap

18

Hayır, sabit 1 bayt türü yok. Sabit uzunluk sadece 4 ve 8 baytlı varyantlara sahiptir. Diğer birçok sayısal değer, büyüklüklere bağlı olarak değişken uzunluk olan "varint" ler olarak kodlanır (ve işaret, ancak "zikzak" burada devreye girer). Böylece, bayt değerini bir baytta 0-127 değerinde ve iki baytta 128-255 arasında saklayabilirsiniz. 16 bitlik değerler, büyüklüğüne (ve işarete/zigzag vb.) Bağlı olarak 1 ile 3 bayt arasında olacaktır.

Katları için, 8 bit sürümü için "bayt" ve geri kalanı için "paketlenmiş" bulunur; Bu, değer başına bir alan-başlık maliyetini önler.

İlgili konular