เราหมายถึงอะไร Byte array? [ปิด]


103

ใครช่วยอธิบายหน่อยได้ไหมว่าฉันไม่เข้าใจแนวคิด

Byte Array คืออะไร?

เราใช้มันในแอพพลิเคชั่น / โปรแกรมที่ไหนและเมื่อไหร่?

ข้อดีและข้อเสียของการใช้ไบต์อาร์เรย์คืออะไร?


ฉันเดาว่ามันสมเหตุสมผลแล้ว เพราะถ้าคุณอ่านคลาส Java I / O ตัวอย่างเช่น ByteArrayInputStream; ByteArrayOutputStream ถ้าไม่มีใครเข้าใจ ByteArray เราจะอธิบายได้อย่างไรว่า ByteArrayInputStream, ByteArrayOutputStream หมายถึงอะไร?
CuriousMind

คำตอบ:


74

ไบต์คือ 8 บิต (ข้อมูลไบนารี)

อาร์เรย์ไบต์คืออาร์เรย์ของไบต์ (tautology FTW!)

คุณสามารถใช้อาร์เรย์แบบไบต์เพื่อจัดเก็บชุดข้อมูลไบนารีตัวอย่างเช่นเนื้อหาของไฟล์ ข้อเสียคือต้องโหลดเนื้อหาไฟล์ทั้งหมดลงในหน่วยความจำ

สำหรับข้อมูลไบนารีจำนวนมากคุณควรใช้ประเภทข้อมูลสตรีมมิ่งหากภาษาของคุณรองรับ


16
เพื่อให้ได้มาซึ่งความอวดดีอย่างมากไม่รับประกันว่าไบต์จะเป็น 8 บิต แน่นอนว่าเป็นมาตรฐานโดยพฤตินัยในปัจจุบัน แต่ในอดีตไม่ได้เป็นเช่นนั้นเสมอไป en.wikipedia.org/wiki/Byte
JaredPar

14
@JaredPar: ถูกต้อง แต่ฉันคิดว่ามันเกินความจำเป็นไปหน่อยสำหรับคำปฏิเสธที่จำเป็นทุกครั้งที่มีคนระบุว่าไบต์คือ 8 บิต
Dinah

6
@Dinah ฉันเห็นด้วยนั่นคือเหตุผลที่ฉันเพิ่มข้อจำกัดความรับผิดชอบเกี่ยวกับการอวดดี ฉันเพิ่งไปดูหน้าที่เกี่ยวข้องวันนี้
JaredPar

6
ช่วยเปิดไฟหน่อยได้The downside to this is that the entire file contents must be loaded into memory.ไหม
CodeYogi

1
@JeffOrris ไม่แน่ใจว่าสิ่งที่คุณหมายถึง"การแปลงไปเป็นแถว byte" นั่นไม่ใช่สิ่งที่คุณมักจะทำ นอกจากนี้"เสี่ยงน้อยกว่า"กับอะไร?
ฟิล

56

ฉันถือว่าคุณรู้ว่าไบต์คืออะไร อาร์เรย์ไบต์เป็นเพียงพื้นที่ของหน่วยความจำที่มีกลุ่มของไบต์ที่ต่อเนื่องกัน (เคียงข้างกัน) ดังนั้นจึงเหมาะสมที่จะพูดถึงพวกมันตามลำดับ: ไบต์แรกไบต์ที่สองเป็นต้น

เช่นเดียวกับไบต์สามารถเข้ารหัสประเภทและช่วงของข้อมูลที่แตกต่างกัน (ตัวเลขตั้งแต่ 0 ถึง 255 ตัวเลขตั้งแต่ -128 ถึง 127 อักขระเดี่ยวที่ใช้ ASCII เช่น 'a' หรือ '%', รหัส op ของ CPU) แต่ละไบต์ในอาร์เรย์ไบต์ อาจเป็นสิ่งเหล่านี้หรือมีส่วนทำให้เกิดค่าหลายไบต์เช่นตัวเลขที่มีช่วงที่ใหญ่กว่า (เช่น 16-bit unsigned int จาก 0..65535) ชุดอักขระสากลสตริงข้อความ ("สวัสดี") หรือบางส่วน / โปรแกรมคอมพิวเตอร์ที่คอมไพล์ทั้งหมด

สิ่งที่สำคัญเกี่ยวกับอาร์เรย์ไบต์คือมันให้การเข้าถึงที่จัดทำดัชนี (เร็ว) แม่นยำและเข้าถึงค่า 8 บิตแต่ละค่าที่เก็บไว้ในส่วนของหน่วยความจำนั้นและคุณสามารถใช้งานไบต์เหล่านั้นเพื่อควบคุมทุกๆบิตได้ สิ่งที่ไม่ดีคือคอมพิวเตอร์จะถือว่าทุกรายการเป็นตัวเลข 8 บิตอิสระซึ่งอาจเป็นสิ่งที่โปรแกรมของคุณกำลังจัดการอยู่หรือคุณอาจชอบประเภทข้อมูลที่มีประสิทธิภาพเช่นสตริงที่ติดตามความยาวของตัวเองและเพิ่มขึ้น ตามความจำเป็นหรือตัวเลขทศนิยมที่ช่วยให้คุณสามารถจัดเก็บคำพูด 3.14 ได้โดยไม่ต้องคำนึงถึงการแทนค่าบิต ในฐานะประเภทข้อมูลการแทรกหรือลบข้อมูลใกล้จุดเริ่มต้นของอาร์เรย์แบบยาวจะไม่มีประสิทธิภาพเนื่องจากจำเป็นต้องสับองค์ประกอบที่ตามมาทั้งหมดเพื่อสร้างหรือเติมช่องว่างที่สร้าง / ต้องการ


1
คำอธิบายดีมาก !!!
Sundararaj Govindasamy

11

จากวิกิพีเดีย :

ในวิทยาการคอมพิวเตอร์โครงสร้างข้อมูลอาร์เรย์หรืออาร์เรย์คือโครงสร้างข้อมูลที่ประกอบด้วยชุดขององค์ประกอบ (ค่าหรือตัวแปร) แต่ละตัวระบุด้วยดัชนีจำนวนเต็มตั้งแต่หนึ่งตัวขึ้นไปเก็บไว้เพื่อให้สามารถคำนวณที่อยู่ของแต่ละองค์ประกอบจากดัชนีได้ ทูเพิลด้วยสูตรทางคณิตศาสตร์อย่างง่าย

ดังนั้นเมื่อคุณพูดว่าไบต์อาร์เรย์คุณกำลังอ้างถึงอาร์เรย์ของความยาวที่กำหนดไว้บางส่วน (เช่นจำนวนองค์ประกอบ) ที่มีองค์ประกอบขนาดไบต์ (8 บิต)

ใน C # อาร์เรย์ไบต์อาจมีลักษณะดังนี้:

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

ตัวอย่างด้านบนกำหนดอาร์เรย์ของ 4 องค์ประกอบโดยแต่ละองค์ประกอบสามารถมีความยาวได้ไม่เกินไบต์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.