Rust的序列化与python不同?||更改二进制代码中的字节序

ffdz8vbo  于 2022-11-24  发布在  Python
关注(0)|答案(1)|浏览(126)

我是Rust的新手,但对编程还不熟悉。所以我尝试通过TCPStream将数据发送到服务器(服务器能够以500 Hz的频率响应机器人)
我从制造机器人的公司那里得到了一个可行的例子。
问题在于:几天后,我一遍又一遍地阅读文档,用Wireshark测量了一个特定的情况。
所以我知道工作的python-program发送00 05 56 00 02到服务器是正确的
05 =数据包大小,56 =要执行的请求操作,02 =要请求的数据
我 rust 程序发送05 00 56 02 00,我不知道为什么
第一个
[edit]好的,我尝试用

let options = bincode::DefaultOptions::new().with_big_endian();

但输出仍然相同...因此选项为

  • 我无法理解文档
  • 它不工作

你对默认字节序的理解是正确的...所以我希望这能有所帮助。也许我只是做错了?
[edit]成功了!谢谢
我插

let serialize_options = bincode::DefaultOptions::new()
    .with_fixint_encoding()
    .with_big_endian();

和编辑

let payload_byte: Vec<u8> = serialize_options.serialize(&payload).unwrap();

现在我发送了00 05 56 00 02并从服务器得到了答复
下一步将使用新知识进行反序列化

j8ag8udp

j8ag8udp1#

正在插入

let serialize_options = bincode::DefaultOptions::new()
    .with_fixint_encoding()
    .with_big_endian();

和编辑

let payload_byte: Vec<u8> = 
    serialize_options.serialize(&payload).unwrap();

为我工作
非常感谢你

相关问题