为什么我们更喜欢byte []对int []或long []?

Mah*_*rma 2 java primitive-types

这可能是如此简单的问题,

我知道这byte是一种原始类型java,属于integer家庭,需要1 byte内存中的空间.当我们处理二进制数据时(例如,当我们读/写文件时),我们将数据存储到byte array我们的操作中,我怀疑的是,当我们有其他原语时,我们short,int为什么喜欢byte[]?任何人都可以澄清

提前致谢.

a C*_*CVn 6

实际上使用字节数组(忽略那些本身无法使用8位数据块的计算机;我甚至不知道这些天是否存在于实际使用中)保证始终以相同的顺序表示数据字节,无论如何平台,编程语言或框架.了解存储或传输格式,您可以将其转换为当前平台等使用的任何内部格式.

例如,我不相信在Alpha CPU上运行的用C++编写的应用程序会写出unsigned long与在Intel上运行的.NET应用程序写出的相同的方式UInt32(更不用说在IBM z10上运行的Java可能如何)处理64位long或PIC组件的低32位可能会处理在I/O端口处抛出32位值.如果你使用纯字节,这就成了一个问题:你必须在你读或写的任何地方翻译字节序列,但你会知道如何做到这一点.它定义明确.

如果通过套接字发送数据,将其持久保存到文件中,或者通过使用字节数组在空间或时间中传输数据,则可以保证收件人将确切地看到发送或保留的内容.然后由收件人决定(请注意,"收件人"可能是您自己的应用程序的文件"加载"代码,而"发件人"可能是"保存"到文件中的代码)以执行对字节序列有用的操作发件人从任何恰好是其原生格式生成的.

如果使用非字节类型,则需要通过其他方式保证字节顺序,因为根据平台等,字节可能以不同的顺序解释.例如,您需要指定(自己或通过引用框架的规范)多字节整数的持久形式是使用大端还是小端.