java द्विआधारी स्ट्रिंग को बाइट सरणी में कनवर्ट करें




string binary (3)

मेरे पास एक स्ट्रिंग है जो और शून्य है जो मैं बाइट्स की एक सरणी में कनवर्ट करना चाहता हूं।

उदाहरण के लिए String b = "0110100001101001" मैं इसे कैसे 2 के byte[] में परिवर्तित कर सकता हूँ?


यह मानते हुए कि आपके द्विआधारी स्ट्रिंग को बिना किसी आराम के 8 से विभाजित किया जा सकता है, आप निम्न विधि का उपयोग कर सकते हैं:

/**
 * Get an byte array by binary string
 * @param binaryString the string representing a byte
 * @return an byte array
 */
public static byte[] getByteByString(String binaryString){
    Iterable iterable = Splitter.fixedLength(8).split(binaryString);
    byte[] ret = new byte[Iterables.size(iterable) ];
    Iterator iterator = iterable.iterator();
    int i = 0;
    while (iterator.hasNext()) {
        Integer byteAsInt = Integer.parseInt(iterator.next().toString(), 2);
        ret[i] = byteAsInt.byteValue();
        i++;
    }
    return ret;
}

अपनी निर्भरताओं के लिए अमरूद को अपग्रेड करने के लिए मत भूलिए।

एंड्रॉइड में आपको एप ग्रेडेल में जोड़ना चाहिए:

compile group: 'com.google.guava', name: 'guava', version: '19.0'

और इसे परियोजना ग्रेडेल में जोड़ें:

allprojects {
    repositories {
        mavenCentral()
    }
}

अपडेट 1

इस पोस्ट में गवाबा लिब का उपयोग किए बिना एक समाधान है


एक और सरल दृष्टिकोण है:

String b = "0110100001101001";
byte[] bval = new BigInteger(b, 2).toByteArray();

इसे बेस 2 में एक पूर्णांक में पार्स करें, फिर एक बाइट सरणी में कनवर्ट करें। वास्तव में, जब से आपके पास 16 बिट्स हैं, तो इसका इस्तेमाल शायद ही कम इस्तेमाल की गई short अवधि को तोड़ने का है।

short a = Short.parseShort(b, 2);
ByteBuffer bytes = ByteBuffer.allocate(2).putShort(a);

byte[] array = bytes.array();




bit