Chúng ta có nghĩa là gì bởi mảng Byte? [đóng cửa]


103

Ai đó có thể vui lòng giải thích, tôi không chính xác nhận được khái niệm.

Mảng Byte là gì?

Chúng tôi sử dụng nó ở đâu và khi nào trong các ứng dụng / chương trình?

những lợi thế và bất lợi của việc sử dụng một mảng byte là gì?


Tôi đoán điều này có lý; bởi vì nếu bạn đọc các lớp Java I / O; ví dụ ByteArrayInputStream; ByteArrayOutputStream. Trừ khi ai đó hiểu ByteArray, làm thế nào để làm rõ ByteArrayInputStream, ByteArrayOutputStream nghĩa là gì?
CuriousMind

Câu trả lời:


74

Một byte là 8 bit (dữ liệu nhị phân).

Mảng byte là một mảng các byte (tautology FTW!).

Bạn có thể sử dụng một mảng byte để lưu trữ một tập hợp dữ liệu nhị phân, chẳng hạn như nội dung của một tệp. Nhược điểm của điều này là toàn bộ nội dung tệp phải được tải vào bộ nhớ.

Đối với một lượng lớn dữ liệu nhị phân, sẽ tốt hơn nếu sử dụng kiểu dữ liệu truyền trực tuyến nếu ngôn ngữ của bạn hỗ trợ.


16
Để có được cực kỳ lớn, một byte không được đảm bảo là 8 bit. Đó chắc chắn là tiêu chuẩn thực tế của ngày nay nhưng trong lịch sử không phải lúc nào cũng vậy. vi.wikipedia.org/wiki/Byte
JaredPar,

14
@JaredPar: chính xác nhưng tôi nghĩ sẽ hơi quá mức cần thiết cho việc tuyên bố từ chối trách nhiệm mỗi khi ai đó tuyên bố rằng một byte là 8 bit.
Dinah

6
@Dinah, tôi đồng ý, đó là lý do tại sao tôi đã thêm tuyên bố từ chối trách nhiệm về ngữ cảnh. Tôi chỉ tình cờ xem trang có liên quan ngày hôm nay.
JaredPar

6
Bạn có thể vui lòng đặt một số ánh sáng vào The downside to this is that the entire file contents must be loaded into memory.?
CodeYogi

1
@JeffOrris không chắc ý của bạn khi "chuyển đổi thành mảng byte" . Đó không phải là điều bạn thường làm. Ngoài ra, "ít bị tổn thương" để làm gì?
Phil

56

Tôi giả sử bạn biết byte là gì. Mảng byte chỉ đơn giản là một vùng bộ nhớ chứa một nhóm các byte liền kề (cạnh nhau), sao cho hợp lý khi nói về chúng theo thứ tự: byte đầu tiên, byte thứ hai, v.v.

Cũng giống như byte có thể mã hóa các loại và phạm vi dữ liệu khác nhau (số từ 0 đến 255, số từ -128 đến 127, các ký tự đơn sử dụng ASCII, ví dụ: 'a' hoặc '%', mã op CPU), mỗi byte trong một mảng byte có thể là bất kỳ thứ nào trong số này hoặc đóng góp vào một số giá trị nhiều byte như các số có phạm vi lớn hơn (ví dụ: int 16-bit không dấu từ 0..65535), bộ ký tự quốc tế, chuỗi văn bản ("xin chào") hoặc một phần / tất cả các chương trình máy tính đã biên dịch.

Điều quan trọng về mảng byte là nó cung cấp quyền truy cập thô (nhanh), chính xác, được lập chỉ mục vào từng giá trị 8 bit đang được lưu trữ trong phần bộ nhớ đó và bạn có thể thao tác trên các byte đó để kiểm soát từng bit. Điều tồi tệ là máy tính chỉ coi mọi mục nhập là một số 8 bit độc lập - đó có thể là thứ mà chương trình của bạn đang xử lý hoặc bạn có thể thích một số kiểu dữ liệu mạnh mẽ như một chuỗi theo dõi độ dài của chính nó và phát triển khi cần thiết hoặc một số dấu phẩy động cho phép bạn lưu trữ nói 3,14 mà không cần suy nghĩ về biểu diễn bit khôn ngoan. Là một kiểu dữ liệu, việc chèn hoặc xóa dữ liệu gần đầu một mảng dài sẽ không hiệu quả, vì tất cả các phần tử tiếp theo cần được xáo trộn để tạo hoặc lấp đầy khoảng trống được tạo / yêu cầu.


1
Giải thích rất tốt !!!
Sundararaj Govindasamy

11

Từ wikipedia :

Trong khoa học máy tính, cấu trúc dữ liệu mảng hay đơn giản là mảng là cấu trúc dữ liệu bao gồm một tập hợp các phần tử (giá trị hoặc biến), mỗi phần tử được xác định bởi một hoặc nhiều chỉ số nguyên, được lưu trữ để có thể tính toán địa chỉ của mỗi phần tử từ chỉ mục của nó. tuple bằng một công thức toán học đơn giản.

Vì vậy, khi bạn nói mảng byte, bạn đang đề cập đến một mảng có độ dài xác định nào đó (ví dụ: số phần tử) chứa tập hợp các phần tử có kích thước byte (8 bit).

Trong C #, một mảng byte có thể giống như sau:

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

Mẫu trên xác định một mảng gồm 4 phần tử, trong đó mỗi phần tử có thể dài tối đa một Byte .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.