u8::from_be_bytes 和 u8::from_le_bytes 之间有什么有意义的区别吗?

Is there a meaningful difference between u8::from_be_bytes and u8::from_le_bytes?

既然big-endian和little-endian与字节顺序有关,又因为一个u8是一个字节,所以u8::from_be_bytesu8::from_le_bytes不总是一样的吗行为?

在 byte-level 上没有区别。为了更好地理解 Big-endian 与 Little-endian 的区别,请考虑以下内容:

可以看出,示例中有三个字节,每个字节都有不同的颜色。请注意每个字节中的位在 BE 和 LE 中看起来完全相同。

那是 language-agnostic 顺便说一句。

至于在[=10=上运行的Rust函数,Trent解释得很好。我的回答更侧重于 BE/LE 通常如何工作的部分。

是的,他们有相同的行为。提供 u8 上的 byte-oriented 函数(swap_bytes(from|to)_[bln]e(_bytes)?)是为了与较大的整数保持一致,即使它们的实现很简单。

除其他外,这使得编写适用于所有整数大小的宏代码变得更加容易,而不必 special-case u8.