2012-08-03 17 views
5

पर वापस कैसे करें, मैं एक विधि लिख रहा हूं जहां मैं int मानों को बाइनरी तारों में परिवर्तित कर रहा हूं और उन्हें संग्रहीत कर रहा हूं। मैं ऐसा करने के लिए विधि Integer.toBinaryString विधि का उपयोग कर रहा हूं, और यह सही तरीके से काम कर रहा है, लेकिन समस्या यह है कि मुझे स्ट्रिंग में बिल्कुल 4 बिट्स को वापस करने की विधि की आवश्यकता है (यह कभी और अधिक नहीं होगा क्योंकि संख्याएं काफी बड़ी नहीं हैं)।Integer.toBinaryString को कम से कम 4 बिट्स

int value5 = 3; 
String strValue5 = Integer.toBinaryString(value5); 
for(int index = 0; index < 4; index++){ 
    sBoxPostPass[4][index] = strVal5.charAt(index); 
} 

जाहिर है, यह एक ArrayOutOfBoundsException क्योंकि strValue5 == 11 और नहीं 0011, जैसे कि यह होने की जरूरत है फेंक देगा: यहाँ मेरी कोड और जहाँ समस्या उत्पन्न हो रही है की एक उदाहरण है। मुझे उम्मीद है कि यह पर्याप्त रूप से स्पष्ट है। मदद के लिए अग्रिम धन्यवाद।

+0

मैं आम तौर पर परिणाम लेता हूं, आगे के अतिरिक्त अतिरिक्त शून्य का एक गुच्छा जोड़ता हूं, फिर वांछित लंबाई के लिए "पूंछ" लेता हूं। कोई गणना की आवश्यकता नहीं है। –

+0

अच्छी कॉल - मैं यह करूँगा –

+1

http://stackoverflow.com/questions/4421400/how-to-get-0-padded-binary-representation-of-an-integer-in-java – MacAnthony

उत्तर

1

यदि आपके मान में हमेशा 4 बिट होंगे तो प्रश्न में 16 मानों के लिए लुक-अप तालिका का उपयोग करने के लिए यह छोटा है। मेरे जावा में किसी भी त्रुटि को सुधारना पाठक के लिए एक अभ्यास के रूप में छोड़ दिया गया है।

static String binary4[16] = {"0000", /* another exercise for the reader */, "1111"}; 
static String toBinary4(int value) { 
    return binary4[value & 0xF]; 
} 
2

मैं गारंटी नहीं कर रहा हूँ इस लिए सबसे कारगर तरीका है, लेकिन आप हमेशा अपनी खुद की विधि है कि Integer.toBinaryString उससे उचित रूप से स्वरूपों कॉल कर सकते हैं:

public static String toBinaryStringOfLength(int value, int length) { 
    String binaryString = Integer.toBinaryString(value); 
    StringBuilder leadingZeroes = new StringBuilder(); 
    for(int index = 0; index < length - binaryString.length(); index++) { 
     leadingZeroes = leadingZeroes.append("0"); 
    } 

    return leadingZeroes + binaryString; 
} 

ध्यान रखें मैं नहीं था ' जिस स्थिति में आप भेज रहे हैं, उस स्थिति के लिए टी खाता है जो आपके द्वारा प्रदान की जाने वाली लंबाई से बाइनरी में प्रतिनिधित्व करने के लिए अधिक बिट्स की आवश्यकता होती है।

4

कम से कम 4 अंकों को वापस करने के लिए एक चाल 5 अंक संख्या है और पहले अंक को काट देती है।

String strValue5 = Integer.toBinaryString(value5 + 0b10000).substring(1); 
संबंधित मुद्दे