Rust htons 和 ntohs

arc*_*rty 5 rust

我有一个一直依赖的程序,native::io::net::{htons, ntohs}但现在在Could not find 'io' in 'packet::native'. 变化似乎发生在上周的某个时间

搜索不会产生关于更改的太多信息,并且在文档中搜索htonsntohs不会产生任何有用的信息。

在 Rust 中执行htons或执行的(新的?)标准方法是ntohs什么?

一个明显的解决方案是编写我自己的,但人们希望它在标准库中。

McP*_*inM 5

您可以在特征上使用from_be和函数。网络顺序是大端,所以这是等价的。to_beInt

您可以在文档中找到它们的示例用法:

http://doc.rust-lang.org/core/num/trait.Int.html#method.to_be

http://doc.rust-lang.org/core/num/trait.Int.html#method.from_be


Chr*_*gan 5

这些现在在std::sys_common::net,但是std::sys_common是私有的。但是它们的实现src/libstd/sys/common/net.rs非常简单:

pub fn htons(u: u16) -> u16 {
    u.to_be()
}
pub fn ntohs(u: u16) -> u16 {
    Int::from_be(u)
}
Run Code Online (Sandbox Code Playgroud)