Byte数组是什么意思?

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

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

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

一个字节数组是一个字节数组(重言式FTW!)。

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

对于大量的二进制数据,如果您的语言支持,则最好使用stream数据types。

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

就像字节可以编码不同types和范围的数据一样(数字从0到255,数字从-128到127,使用ASCII的单个字符,例如'a'或'%',CPU操作码),字节数组中的每个字节可能是这些东西中的任何一个,或者对一些多字节值(例如具有较大范围的数字(例如,从0到65535的16位无符号整数),国际字符集,文本string(“hello”)或part /所有的编译的电脑程序。

关于字节数组的关键之处在于,它可以对存储在该部分内存中的每个8位值进行索引(快速),精确的原始访问,并且可以对这些字节进行操作来控制每一个位。 坏处是计算机只是将每个条目视为一个独立的8位数字 – 这可能是您的程序正在处理的内容,或者您​​可能更喜欢一些强大的数据types,如跟踪其自身长度和增长的string如果需要,还可以使用浮点数来存储3.14,而不用考虑按位表示。 作为一种数据types,在长arrays的开始附近插入或删除数据效率不高,因为所有后续的元素都需要进行混洗来填充或填充所创build/需要的空白。

从维基百科 :

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

所以当你说字节数组的时候,你指的是一个包含一组字节(8位)大小的元素的定义长度的数组(例如元素数)。

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

 byte[] bytes = { 3, 10, 8, 25 }; 

上面的示例定义了一个由4个元素组成的数组,每个元素的长度可以达到一个字节 。