Byte数组是什么意思?

day*_*mer 95 java arrays computer-science

有人可以解释一下,我并不完全明白

什么是字节数组
我们在应用程序/程序中使用它的时间
和地点使用字节数组的优点和缺点是什么

Phi*_*hil 67

一个字节是8位(二进制数据).

字节数组是字节数组(重言式FTW!).

您可以使用字节数组来存储二进制数据的集合,例如,文件的内容.这样做的缺点是必须将整个文件内容加载到内存中.

对于大量二进制数据,如果您的语言支持,最好使用流数据类型.

  • 为了变得非常迂腐,一个字节不能保证是8位.它当然是今天事实上的标准,但从历史上看并非总是如此.http://en.wikipedia.org/wiki/Byte (12认同)
  • @JaredPar:准确但我觉得每当有人说一个字节是8位时需要免责声明就有点矫枉过正了. (12认同)
  • @Dinah,我同意,这就是为什么我添加了迂腐的免责声明.我今天碰巧正在查看相关页面. (6认同)
  • 你能否说一下"这样做的缺点是整个文件内容必须加载到内存中." (6认同)

use*_*534 49

我假设你知道一个字节是什么.字节数组只是一个包含一组连续(并排)字节的内存区域,因此按顺序讨论它们是有意义的:第一个字节,第二个字节等.

正如字节可以编码不同类型和范围的数据(数字从0到255,数字从-128到127,单个字符使用ASCII,例如'a'或'%',CPU操作码),字节数组中的每个字节可能是这些东西中的任何一个,或者有助于某些多字节值,例如具有较大范围的数字(例如,来自0..65535的16位无符号整数),国际字符集,文本字符串("hello")或part /所有已编译的计算机程序.

字节数组的关键在于它为存储在该部分内存中的每个8位值提供索引(快速),精确的原始访问,并且您可以对这些字节进行操作以控制每个位.坏处是计算机只将每个条目视为一个独立的8位数 - 这可能是你的程序正在处理的,或者你可能更喜欢一些强大的数据类型,如跟踪自己的长度和增长的字符串根据需要,或者一个浮点数,让你存储说3.14而不考虑按位表示.作为数据类型,在长数组的开头附近插入或移除数据是低效的,因为需要对所有后续元素进行混洗以填充或填充创建/需要的间隙.


Mig*_*lla 10

来自维基百科:

在计算机科学中,数组数据结构或简单数组是由一组元素(值或变量)组成的数据结构,每个元素由一个或多个整数索引标识,存储使得每个元素的地址可以从其索引计算元组由一个简单的数学公式组成.

因此,当您说字节数组时,您指的是包含字节(8位)大小元素集合的某个定义长度(例如,元素数)的数组.

在C#中,字节数组可能如下所示:

byte[] bytes = { 3, 10, 8, 25 };
Run Code Online (Sandbox Code Playgroud)

上面的示例定义了一个包含4个元素的数组,其中每个元素的长度最多为Byte.