Я хочу спросить, потому что нахожу это странным: способ написания varint зависит от цели.
Мой простой код может записывать в файл или в сокет. Когда я пишу в файл, hexdump показывает
0000000 02ac
0000002
Когда я пишу в сокет, клиент C #, который читает побайтно, показывает
переменного тока 02
код для этого:
Приложение C ++
if(connect(fd, (sockaddr*)&addr, sizeof(addr))<0) {
perror("połączenie nieudane");
return -1;
}
//int fd = open("myfile", O_WRONLY | O_TRUNC);
ZeroCopyOutputStream* raw_output = new FileOutputStream(fd);
CodedOutputStream* coded_output = new CodedOutputStream(raw_output);
coded_output->WriteVarint32(300);
delete coded_output;
delete raw_output;
close(fd);
Приложение C #
var str = client.GetStream();
while(str.DataAvailable) {
b = (byte)str.ReadByte();
Console.Write("{0:x2} ", b);
}
Я думал, что не должно быть никакой разницы. Я не могу объяснить это себе. Вы знаете, что случилось?