gpt4 book ai didi

c# - C++ API 以不同的方式将 Varint 写入文件而不是套接字

转载 作者:搜寻专家 更新时间:2023-10-31 01:56:59 25 4
gpt4 key购买 nike

我想问一下,因为我觉得很奇怪:varint 的编写方式取决于目标。

我的简单代码可以写入文件或套接字。当我写入文件时,hexdump 显示

0000000 02ac
0000002

当我写入套接字时,逐字节读取的 C# 客户端显示

ac 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);
}

我认为应该没有区别。我无法向自己解释。你知道这是怎么回事吗?

最佳答案

我猜你正在使用 hexdump(或 od)来显示文件内容,而且你实际上没有问题 ;-)

演示:

$ echo -n ab > file
$ hexdump file
0000000 6261 # notice this is 'ba'
0000002
$ hexdump -C file
00000000 61 62 |ab|
00000002

如果没有选项,hexdump 将解释 16 位 block 中的数据,而不是逐字节解释。使用-C顺序得到每8bit的数量输出。

在大端机器上不会有这个(显示)问题。

关于c# - C++ API 以不同的方式将 Varint 写入文件而不是套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6242317/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com