当前位置: 首页 > 知识库问答 >
问题:

u8::from_be_字节和u8::from_le_字节之间是否存在有意义的差异?

祁嘉言
2023-03-14

既然big-endian和little-endian与字节顺序有关,既然oneu8是一个字节,那么u8::from_be_bytesu8::from_le_bytes不总是有相同的行为吗?

共有2个答案

空翼
2023-03-14

在字节级别上没有区别。为了更好地理解大端和小端的区别,考虑一下:

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

这就是语言不可知论。

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

马欣荣
2023-03-14

是的,他们有同样的行为。面向字节的函数(swap_bytes(from|to)_[bln]e(_bytes)?)上的u8是为了与较大的整数保持一致而提供的,即使它们有琐碎的实现。

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

 类似资料:
  • < b >想改进这个问题?通过编辑此帖子添加详细信息并澄清问题。 我想转换: 要像这样OO: 这导致一个错误“类型U8不能子类化最终类字节”。 有没有一个简单的方法来做到这一点?

  • 我想使用Thrift发送1024字节的数据。它必须正好是1024字节,因为它是与其他框架的比较基准。 Thrift有两种类型来表示字节:“byte”和“binary”,但我不知道如何使用这些类型“binary”类型映射到std::string,这很奇怪(我不明白为什么以及如何使用它)。”字节的类型被映射到一个8位整数,这对我来说似乎更符合逻辑。 要表示1024字节的数据,我使用:

  • 我正在与Scribbler2机器人和Fluke2板工作,并通过Java中的Myro与Fluke沟通。Fluke board是Scribbler和用Java编写的桌面客户端之间的蓝牙通信桥梁。它通过一个RS232串口与涂写器通信。 这可能是一个愚蠢的问题,上面的系统很复杂,所以如果我不能很好地解释这一点,请原谅我。 我的问题的背景:Java使用有符号字节。Fluke是(我想)用C写的,所以使用了无符

  • 上述代码导致以下错误: 我的猜测是,问题出在trait中的类属函数。

  • 问题内容: 我正在使用hibernate将对象映射到数据库。客户端(iOS应用程序)向我发送JSON格式的特定对象,我使用以下实用程序方法将其转换为真实的表示形式 但是问题是,在我的pogo中,我将值存储为byte [],如下所示(因为这是存储在数据库中的内容-blob) 当然,现在转换失败了,因为它无法在byte []和String之间进行转换。 这是更改构造函数以接受String而不是字节数组

  • 问题内容: 我正在使用Hibernate 4.2并构建时间字节码工具来解决出现在关系上的懒惰问题和(https://developer.jboss.org/wiki/SomeExplanationsOnLazyLoadingone- to-one ) 您知道之间有什么区别吗? Hibernate字节码检测工具:http : //docs.jboss.org/hibernate/orm/4.3/ma