2011-08-31 19 views
5

मुझे स्ट्रिंग बाइनरी पूरक करने की आवश्यकता है।जावा में बाइट्स का पूरक कैसे करें?

st=br.readLine() //I used readline to read string line

byte[] bytesy = st.getBytes(); //and put it to bytes array.

अब मैं कैसे बाइट्स की दोहरी बराबर के पूरक हो सकते हैं (या कैसे 11111111 करने के लिए यह XOR करने के लिए)?

अपेक्षित उत्पादन:

सेंट के पहले चार फिर एक्स दोहरी बराबर है 01111000

है और उत्पादन के पूरक द्वारा 10,000,111 होना चाहिए (या 11111111 के लिए XOR)

+3

जावा में एक्सओआर ऑपरेटर '^' – evandrix

+3

एक पाठक और रीडलाइन का उपयोग करके बाइनरी डेटा पढ़ने के लिए विचित्र है। साथ ही, GetBytes प्लेटफॉर्म के डिफ़ॉल्ट एन्कोडिंग का उपयोग करता है। स्ट्रिंग को बाइट्स में बदलने और कोड पोर्टेबल बनाने के लिए आपको एन्कोडिंग निर्दिष्ट करना पड़ सकता है। –

+0

लेकिन मुझे नहीं पता कि XOR से 11111111 तक। क्योंकि .. क्या आप जानते हैं कि "11111111" स्ट्रिंग को बाइट में कैसे परिवर्तित करें? –

उत्तर

9

बाइट के पूरक के लिए, आप ~ ऑपरेटर का उपयोग करते हैं। तो अगर एक्स 01111000 है, तो ~x 10000111. XORing आप x ^= 0xFF उपयोग कर सकते हैं (11111111b == हेक्स में 0xFF)

+0

इसके लिए धन्यवाद !!! –

1

आप एक लिखने की ज़रूरत एक समय में इसे एक बाइट करने के लिए लूप।

1

है आप इसे में रूपांतरित किए बिना इस तरह के "111111" आप दुक्की-तारीफ प्रदर्शन कर सकते हैं के रूप में द्विआधारी के रूप में नंबर हैं एक संख्या। तुम यह केर सकते हो।

BufferedReader br = 
int ch; 
while((ch = br.read()) >= 0) { 
    switch(ch) { 
     case '0': ch = '1'; break; 
     case '1': ch = '0'; break; 
    } 
    System.out.print(ch); 
} 
संबंधित मुद्दे