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

mpl*_*pls 24 endianness rust

由于大端和小端与字节顺序有关,并且由于一个u8是一个字节,所以不会u8::from_be_bytes并且u8::from_le_bytes总是具有相同的行为吗?

tre*_*tcl 31

是的,他们有相同的行为。提供面向字节的函数 (swap_bytes(from|to)_[bln]e(_bytes)?)u8是为了与较大整数保持一致,尽管它们的实现很简单。

除此之外,这使得编写对于所有大小的整数都正确的宏代码变得更容易,而不必使用特殊情况u8


at5*_*321 7

在字节级别上没有区别。为了更好地理解 Big-endian 与 Little-endian 的不同之处,请考虑以下内容:

字节顺序示例

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

顺便说一句,这是与语言无关的。

至于运行在 上的 Rust 函数u8,Trent 解释得很好。我的回答更多地关注 BE/LE 一般如何工作的部分。