Convert From Integer to 4 Bytes and from 4 Bytes to Integer
سبتمبر 23rd, 2009
التعامل مع العمليات الثنائية bitwise operation مهم للغايه لأي مبرمج خصوصا في التطبيقات التي تحتاج التعديل على الصور أو الملفات الثنائية ، وأغلب الأوقات قد نضطر لوضع قيمه صحيحة integer في 4 بايتات مثلا لتخزينها في في أحدى المواقع في صورة أو أي مكان .. أيضا العملية العكسية وهي تحويل 4 بايتات الى عدد صحيح قد تكون مفيدة هي الأخرى ..
قمت بكتابة هذا الكلاس للتسهيل على من يريد استخدام هذه التحويلات في برنامجه ، والكلاس يستخدم العمليات الثنائية AND/OR/SHIFT وتقريبا هذه العمليات معروفة لدى أغلب المبرمجين وطلاب الحاسوب .. استخدمت لغه الجافا في المثال ، ويمكنك تحويله بسهوله لأي لغه برمجة تجيدها فأغلب اللغات توفر هذه العمليات للتعامل مع المستوى المنخفص في الأعداد ..
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | // Convert From 4 bytes into one integer // convert from one integer into 4 byte public class ByteIntConverter { public static byte[] IntToByte ( int number ) { byte first = (byte) ( (number & 0x000000FF ) ); byte second = (byte) ( (number & 0x0000FF00 ) >>> 8 ); byte third = (byte) ( (number & 0x00FF0000 ) >>> 16); byte forth = (byte) ( (number & 0xFF000000 ) >>> 24); byte[] result = new byte[] { forth,third,second,first } ; return result ; } public static int BytesToInt ( byte[] bytes ) { int x = 0x00000000 ; x = ( x << 8 ) | bytes[0]; x = ( x << 8 ) | bytes[1]; x = ( x << 8 ) | bytes[2]; x = ( x << 8 ) | bytes[3]; return x ; } } |
وهذا برنامج لإختبار الكلاس :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | // Convert integer to bytes import java.util.Arrays ; public class ByteTest { public static void main (String[] args) { int number = 534 ; byte[] numberInByte = ByteIntConverter.IntToByte(number); System.out.println("Number in Integer : " + number ) ; System.out.println("Numbers in Bytes : " + Arrays.toString(numberInByte)) ; System.out.println(); byte[] bytes = new byte [] {0,0,2,22}; System.out.println("Numbers in Bytes : " + Arrays.toString(bytes)) ; System.out.println("Number in Integer : " + ByteIntConverter.BytesToInt(bytes) ) ; } } |
وهذا مخرج البرنامج لمن لم يتوقع ذلك :
أرجوا أن يفيد ذلك !
Categories: الخوارزميات وهياكل البيانات