Home > الخوارزميات وهياكل البيانات > Convert From Integer to 4 Bytes and from 4 Bytes to Integer

Convert From Integer to 4 Bytes and from 4 Bytes to Integer

سبتمبر 23rd, 2009 Wajdy Essam

التعامل مع العمليات الثنائية 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) ) ;
    }
}

وهذا مخرج البرنامج لمن لم يتوقع ذلك :
byteToInt

أرجوا أن يفيد ذلك !

Comments are closed.