ตัวอย่างง่ายๆของ Java Basics Byte [] การแปลงซึ่งกันและกันด้วยประเภทข้อมูลต่างๆ
นี่คือตัวอย่างของการแปลงของประเภทไบต์ [] เป็นความยาว, int, double, ลอย, สั้น, cahr, วัตถุ, ประเภทสตริง,
ในระหว่างการพัฒนาซ็อกเก็ตคุณมักจะต้องแปลงค่าเฉพาะบางอย่าง (ค่าเหล่านี้อาจเป็นประเภท Java ที่หลากหลาย) เป็นประเภทไบต์ [] ด้วยเหตุผลนี้ฉันได้สรุปตัวอย่างต่อไปนี้และโพสต์เพื่อให้ฉันสามารถอ่านได้บ่อยครั้ง:
Testcase คลาสสาธารณะ { /*** สั้นถึงการแปลงอาร์เรย์ไบต์ */ ไบต์คงที่สาธารณะ [] shorttobyte (หมายเลขสั้น) {int temp = number; ไบต์ [] b = ไบต์ใหม่ [2]; สำหรับ (int i = 0; i <b.length; i ++) {b [i] = จำนวนเต็มใหม่ (อุณหภูมิ & 0xff). bytevalue (); // บันทึกบิตต่ำสุดในอุณหภูมิต่ำสุด = อุณหภูมิ >> 8; // ย้าย 8 บิตไปทางขวา} กลับ b; } /*** การแปลงจากอาร์เรย์ไบต์เป็นสั้น */ public Static Short bytetoshort (byte [] b) {short s = 0; สั้น s0 = (สั้น) (b [0] & 0xff); // บิตต่ำสุด s1 = (สั้น) (b [1] & 0xff); S1 << = 8; S = (สั้น) (S0 | S1); กลับ s; } /*** การแปลงจาก int เป็นอาร์เรย์ไบต์ */ ไบต์คงที่สาธารณะ [] inttobyte (หมายเลข int) {int temp = number; ไบต์ [] b = ไบต์ใหม่ [4]; สำหรับ (int i = 0; i <b.length; i ++) {b [i] = จำนวนเต็มใหม่ (อุณหภูมิ & 0xff). bytevalue (); // บันทึกบิตต่ำสุดในอุณหภูมิต่ำสุด = อุณหภูมิ >> 8; // ย้าย 8 บิตไปทางขวา} กลับ b; } /*** การแปลงจากอาร์เรย์ไบต์เป็น int */ สาธารณะคงที่ int bytetoint (byte [] b) {int s = 0; int s0 = b [0] & 0xff; // บิตต่ำสุด int s1 = b [1] & 0xff; int s2 = b [2] & 0xff; int s3 = b [3] & 0xff; S3 << = 24; S2 << = 16; S1 << = 8; S = S0 | S1 | S2 | S3; กลับ s; } / *** แปลงประเภทยาวเป็นอาร์เรย์ไบต์* / ไบต์คงที่สาธารณะ [] longtobyte (จำนวนยาว) {temp ยาว = จำนวน; ไบต์ [] b = ไบต์ใหม่ [8]; สำหรับ (int i = 0; i <b.length; i ++) {b [i] = ใหม่ยาว (อุณหภูมิ & 0xff). bytevalue (); // บันทึกบิตต่ำสุดในอุณหภูมิบิตต่ำสุด = temp // >> 8; // ย้าย 8 บิตไปทางขวา} กลับ b; } /*** การแปลงจากอาร์เรย์ไบต์เป็นยาว */ สาธารณะคงที่แบบคงที่ Long Bytetolong (byte [] b) {long s = 0; Long S0 = B [0] & 0xff; // ความยาวบิตต่ำสุด S1 = B [1] Long S2 = B [2] & 0xff; Long S3 = B [3] & 0xff; Long S4 = B [4] & 0xff; // Long Long Bit Long S5 = B [5] & 0xff; Long S6 = B [6] & 0xff; Long S7 = B [7] & 0xff; // S0 ไม่เปลี่ยนแปลง S1 << = 8; S2 << = 16; S3 << = 24; S4 << = 8 * 4; S5 << = 8 * 5; S6 << = 8 * 6; S7 << = 8 * 7; S0 | S1 | S2 | S3 | S4 | S5 | S6 | S7; กลับ s; } /*** การแปลงจากสองเท่าเป็นไบต์อาร์เรย์ */ ไบต์คงที่สาธารณะ [] doubleTobyte (double num) {byte [] b = byte ใหม่ [8]; long l = double.doubletolongbits (num); สำหรับ (int i = 0; i <8; i ++) {b [i] = ใหม่ยาว (l) .Bytevalue (); l = l >> 8; } return b; } /*** การแปลงจากอาร์เรย์ไบต์เป็นสองเท่า */ สาธารณะคงที่ double getDouble (byte [] b) {long m; m = b [0]; m & = 0xff; m | = ((ยาว) b [1] << 8); m & = 0xffffffff; m | = ((ยาว) b [2] << 16); m & = 0xffffffffff; m | = ((ยาว) b [3] << 24); m & = 0xffffffffffl; m | = ((ยาว) b [4] << 32); m & = 0xffffffffffffl; m | = ((ยาว) b [5] << 40); m & = 0xffffffffffffl; m | = ((ยาว) b [6] << 48); m & = 0xfffffffffffffl; m | = ((ยาว) b [7] << 56); ส่งคืน double.longbitstodouble (m); } /*** การแปลงจากโฟลตเป็นอาร์เรย์ไบต์ * /โมฆะคงที่สาธารณะ floattobyte (float x) {// แปลง float.floattointbits (f) เป็น int} /*** การแปลงจากอาร์เรย์ไบต์เป็นลอย */ สาธารณะลอยแบบคงที่ getfloat (byte [] b) {// 4 bytes int accum = 0; สำหรับ (int shiftby = 0; shiftby <4; shiftby ++) {accum | = (b [shiftby] & 0xff) << shiftby * 8; } return float.intbitstofloat (สะสม); } /*** การแปลงจากถ่านเป็นอาร์เรย์ไบต์ */ สาธารณะคงที่สาธารณะ [] Chartobyte (Char C) {byte [] b = byte ใหม่ [2]; b [0] = (ไบต์) ((c & 0xff00) >> 8); b [1] = (ไบต์) (C & 0xff); กลับ B; } /*** การแปลงจากอาร์เรย์ไบต์เป็น Char */ public char bytetochar (byte [] b) {char c = (char) (((b [0] & 0xff) << 8) | (b [1] & 0xff)); กลับ C; } /*** การแปลงจากสตริงเป็นอาร์เรย์ไบต์ */ สาธารณะคงที่สาธารณะ [] StringTobyte (String str) พ่น unsupportencodingexception {return str.getBytes ("GBK"); } /*** การแปลงจากอาร์เรย์ไบต์เป็นสตริง */ สตริงคงที่สาธารณะ bytestoString (byte [] str) {สตริงคีย์เวิร์ด = null; ลอง {keyword = สตริงใหม่ (str, "gbk"); } catch (unsupportencodingexception e) {e.printstacktrace (); } คืนคำหลัก; } / *** การแปลงจากวัตถุเป็นอาร์เรย์ไบต์* / @Test โมฆะสาธารณะ testObject2ByTeArray () พ่น IOException, classnotFoundException {// object obj = ""; จำนวนเต็ม [] obj = {1, 3, 4}; // // วัตถุไปยัง ByteArray byteArrayOutputStream BO = ใหม่ byteArrayOutputStream (); ObjectOutputStream OO = ใหม่ ObjectOutputStream (BO); oo.writeObject (obj); ไบต์ [] bytes = bo.tobytearray (); bo.close (); oo.close (); System.out.println (array.toString (ไบต์)); จำนวนเต็ม [] intarr = (จำนวนเต็ม []) testbyTeArray2Object (ไบต์); System.out.println (array.aslist (intarr)); ไบต์ [] b2 = inttobyte (123); System.out.println (array.toString (B2)); int a = bytetoint (b2); System.out.println (a); } /*** การแปลงจากอาร์เรย์ไบต์เป็นวัตถุ */ วัตถุส่วนตัว TestByTeArray2Object (byte [] bytes) พ่น IOException, classnotFoundException {// byte [] bytes = null; วัตถุ OBJ; // byteArray ไปยังวัตถุ byteArrayInputStream bi = new ByteArrayInputStream (ไบต์); ObjectInputStream OI = ใหม่ ObjectInputStream (BI); obj = oi.readobject (); bi.close (); oi.close (); System.out.println (OBJ); คืน OBJ; -ขอบคุณสำหรับการอ่านฉันหวังว่ามันจะช่วยคุณได้ ขอบคุณสำหรับการสนับสนุนเว็บไซต์นี้!