ผู้ที่ใช้ UE จะพบว่ามันสะดวกมากในการแสดงไฟล์ใน Hexadecimal ทำไมต้องหยิก? เมื่อคุณต้องการเข้ารหัส transcode และเข้ารหัสไฟล์กลุ่มของ 01 ไบนารีจะปรากฏขึ้นและดู ท้ายที่สุดไฟล์จอแสดงผลแบบหกเหลี่ยมนั้นสั้นและสะดวก อย่างน้อยฉันก็ใช้บัตรในระหว่างการสอบเข้าโรงเรียนมัธยมต้นและการสอบเข้าวิทยาลัย แน่นอนว่ารองเท้าเด็กที่สามารถทาสี 1248 ในการสอบเข้าโรงเรียนมัธยมและการสอบเข้าวิทยาลัยสามารถบอกได้อย่างรวดเร็วว่าพวกเขาจะไม่มีโอกาสเป็นอาชีพ "ศักดิ์สิทธิ์" ของโปรแกรมเมอร์ ...
เนื่องจากฉันพยายามที่จะมีส่วนร่วมในการแข่งขันนวัตกรรมทางวิทยาศาสตร์ที่ได้รับความนิยมมาก่อนฉันจึงดงดงในเวลานั้นอ่านไฟล์ในสตรีมไบต์และแปลงเป็นไบนารีสี่เหลี่ยมจัตุรัสและ hexadecimal strings แล้วส่งออกไปยังคอนโซลในครั้งเดียว จากนั้นตามค่าของแต่ละบิตจะแสดงในเมทริกซ์ของ 2 สี 4 สีและ 16 สีตามลำดับ จุดประสงค์ในการเขียนสิ่งนี้คือการใช้กล้องเพื่อระบุมันแล้วกู้คืนเป็นสตรีมไบต์และเขียนลงในไฟล์ การออกแบบโปรแกรมนี้เป็นผลิตภัณฑ์ของไฮบริดของสองข้อเท็จจริงที่เจ็บปวด - 1. มันไม่จำเป็นต้องมีการถ่ายโอนไฟล์ผ่านสื่อและอุปกรณ์ USB ใด ๆ คุณสามารถลองคำถามนี้ใช้กล้องหรือลำโพงเพื่อส่งและรับไฟล์เพื่อดูว่าใครสามารถส่งสัญญาณได้อย่างรวดเร็ว
แน่นอนว่าส่วนที่สำคัญที่สุดคือกระแสไบต์ของไฟล์ถูกอ่านเป็น 8 บิตไบต์และแสดงในสอง hexadecimals เนื่องจากคุณอาจพบกับสถานการณ์ที่ไบต์ถูกแปลงเป็นรหัส Int และเสริมมันเป็นการดีที่สุดที่จะรวมเข้าด้วยกันเป็นจำนวนบวกก่อน
การคัดลอกรหัสมีดังนี้:
int result = bytes & 0xff;
อย่าดูถูกดูแคลนประโยคนี้จริง ๆ แล้วมันน่าสนใจมาก ลองคิดดูสิถ้าคุณเพิ่ม 0xff ให้กับ Shenma และมันจะกลายเป็นจำนวนบวก? 0xff คือ 1 ดังนั้นจึงไม่ได้หมายความว่าไม่มีการเปลี่ยนแปลงในการดำเนินการ? Humph มีคนถามฉันมาก่อน ช่วงของไบต์คือ -128 ~ 127, ไม่ใช่ 0 ~ 255 ดังนั้นการมอบหมายเช่น BYTE B = -42;
ไม่ใช่เรื่องยากที่จะทำสิ่งนี้และแปลงเป็นสตริง N-digit หากคุณคิดอย่างรอบคอบมีคลาสที่คุ้นเคย แต่ไม่คุ้นเคยที่นำฟังก์ชั่นนี้โดยตรงหรือไม่? ถูกต้องมันแค่ใช้จำนวนเต็ม! แต่ไม่ต้องกังวลก่อนที่จะใช้มันคุณต้องเคลื่อนไหวเล็ก ๆ น้อย ๆ ใน int นี้
การคัดลอกรหัสมีดังนี้:
(ไบต์ & 0xff) + 0x100
คุณรู้ไหมว่าทำไม? นี่คือ +256 เพียงเพื่อดูมันอย่างสังหรณ์ใจมากขึ้นเพียงเพิ่มด้านหน้า เพราะถ้า int ที่คุณได้รับจะถูกแปลงเป็นสตริงมันเป็นไปได้ว่ามีเพียงเล็กน้อยนั่นคือถ้าไบต์หายไปเมื่อ hexadecimal ถูกแปลงเป็น hexadecimal แล้วโปรแกรมทั้งหมดจะถูกวางผิดพลาดอย่างสมบูรณ์หรือไม่? เพื่อความปลอดภัยจะเป็นการดีกว่าที่จะรวมสาม
คุณสามารถลองสิ่งนี้เพื่อดูผลลัพธ์ทั้งหมดหลังจากที่ไบต์เปลี่ยนเป็นเลขฐานสิบหก
การคัดลอกรหัสมีดังนี้:
โมฆะคงที่สาธารณะหลัก (สตริง [] args) {
สำหรับ (int i = -128; i <128; i ++) {
ไบต์ b = (ไบต์) i;
System.out.println (Integer.toString ((B & 0xff), 16));
-
-
เห็นสิ่งนี้คุณคิดว่า: ทำไมคุณโง่จัง? เหตุใด Int ในการวนรอบสำหรับ BYTE จึงไม่ได้เป็นเพียงแค่การบันทึกรหัส โอเคคุณสามารถลองได้ฉันจะไม่ลองเลย ...
ดังนั้นรหัสที่ในที่สุดก็แปลงไบต์เป็นเลขฐานสิบหกบิตคือ
การคัดลอกรหัสมีดังนี้:
Integer.toString ((ไบต์ & 0xff) + 0x100, 16) .substring (1);
สำหรับไบนารีรูปสี่เหลี่ยมและแปดเท่าของพวกเขาทั้งหมดเหมือนกันดังนั้นฉันจะไม่ยกตัวอย่าง มันถูกนำไปใช้ในรหัสเดียวเพียงหนึ่งประโยคมันน่าทึ่งมาก ...
จากนั้นใช้เมทริกซ์ขัดแตะเพื่อแสดงเฟรมไฟล์ทีละเฟรมใช้กล้องเพื่อจับภาพสีการจดจำจากนั้นแปลงสตริงและตอบกลับสีเพื่อให้อีกฝ่ายรู้ว่าการรับรู้เสร็จสมบูรณ์แล้วแทนที่ภาพถัดไป .. วัฏจักรนี้คือจนกระทั่งเมทริกซ์ขัดแตะไฟล์ได้สิ้นสุดลง ฉันจะไม่โพสต์ส่วนนี้ของรหัสกระบวนการทั้งหมดสามารถผลิตได้โดย YY ด้วยจินตนาการที่อุดมไปด้วย ...
จากนั้นสตริงจะถูกหันกลับไปเป็นสตรีมไบต์ซึ่งง่ายต่อการใช้ชีวิต
การคัดลอกรหัสมีดังนี้:
(byte) integer.parseint (สตริง, 16)
คุณไม่จำเป็นต้องมีการดำเนินการบิตเพียงแค่สร้างผลลัพธ์วางไว้ในอาร์เรย์ไบต์และเขียนซ้ำด้วยการเขียนของ FileOutputStream! อย่าลืมปิดกระแสอินพุตและเอาต์พุต