Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Java

Java में हेक्स स्ट्रिंग को बाइट ऐरे में कैसे बदलें?

Java में, आप एक हेक्साडेसिमल स्ट्रिंग को बाइट ऐरे में दो मुख्य तरीकों से बदल सकते हैं। सबसे सरल और आधुनिक तरीका Java 17+ में जोड़े गए HexFormat क्लास का उपयोग करना है, जबकि पुराने संस्करणों के लिए BigInteger या मैन्युअल पार्सिंग का उपयोग किया जा सकता है।

विधि 1: HexFormat का उपयोग (Java 17+ के लिए अनुशंसित)

यह सबसे साफ, तेज और त्रुटि-रहित तरीका है।

import java.util.HexFormat;

public class HexToByteArray {
    public static void main(String[] args) {
        String hexString = "1D08A";
        
        // HexFormat का उपयोग करके सीधे बाइट ऐरे में बदलें
        byte[] byteArray = HexFormat.of().parseHex(hexString);
        
        System.out.println("हेक्स स्ट्रिंग: " + hexString);
        System.out.print("बाइट ऐरे: ");
        for (byte b : byteArray) {
            System.out.print(b + " ");
        }
    }
}

विधि 2: BigInteger का उपयोग (पुराने Java संस्करणों के लिए)

यह लेख में दिया गया मूल दृष्टिकोण है। ध्यान दें कि यह विधि अग्रणी शून्य (leading zeros) को हटा सकती है।

import java.math.BigInteger;

public class HexToByteArrayLegacy {
    public static void main(String[] args) {
        String hexString = "1D08A";
        
        // हेक्स स्ट्रिंग को BigInteger में पार्स करें
        BigInteger bigInt = new BigInteger(hexString, 16);
        
        // बाइट ऐरे में बदलें
        byte[] byteArray = bigInt.toByteArray();
        
        System.out.println("हेक्स स्ट्रिंग: " + hexString);
        System.out.print("बाइट ऐरे: ");
        for (byte b : byteArray) {
            System.out.print(b + "\t");
        }
    }
}

विधि 3: मैन्युअल पार्सिंग (पूर्ण नियंत्रण के लिए)

यदि आपको बाहरी लाइब्रेरी के बिना और BigInteger के ओवरहेड के बिना रूपांतरण की आवश्यकता है, तो यह दृष्टिकोण सर्वोत्तम है। यह अग्रणी शून्य को भी सही ढंग से संभालता है।

public class HexToByteArrayManual {
    public static byte[] hexStringToByteArray(String hex) {
        // विषम लंबाई वाले स्ट्रिंग्स के लिए पैडिंग जोड़ें
        if (hex.length() % 2 != 0) {
            hex = "0" + hex;
        }
        
        byte[] bytes = new byte[hex.length() / 2];
        for (int i = 0; i < hex.length(); i += 2) {
            bytes[i / 2] = (byte) ((Character.digit(hex.charAt(i), 16) << 4)
                                 + Character.digit(hex.charAt(i + 1), 16));
        }
        return bytes;
    }
    
    public static void main(String[] args) {
        String hexString = "1D08A";
        byte[] byteArray = hexStringToByteArray(hexString);
        
        System.out.println("हेक्स स्ट्रिंग: " + hexString);
        System.out.print("बाइट ऐरे: ");
        for (byte b : byteArray) {
            System.out.print(b + " ");
        }
    }
}

आउटपुट तुलना

इनपुट HexFormat / मैन्युअल BigInteger
"1D08A" [29, 8, -86] (सही: 0x1D, 0x08, 0xAA) [1, -48, -118] (गलत: साइन एक्सटेंशन के कारण)
"01D08A" [1, -48, -86] [1, -48, -86]

मुख्य बिंदु

  • Java 17+: HexFormat.of().parseHex(hexString) का उपयोग करें - यह मानक, कुशल और सुरक्षित है।
  • पुराने Java: मैन्युअल पार्सिंग विधि का उपयोग करें क्योंकि BigInteger.toByteArray() साइन-बिट एक्सटेंशन जोड़ता है और विषम-लंबाई वाले हेक्स स्ट्रिंग्स को गलत तरीके से संभालता है।
  • हमेशा सुनिश्चित करें कि हेक्स स्ट्रिंग की लंबाई सम है (आवश्यकतानुसार अग्रणी शून्य जोड़ें)।
  1. - Java में Char को String में कैसे बदलें

    Java में char को string में बदलने के लिए, toString() और valueOf() मेथड्स का उपयोग किया जाता है। toString() और valueOf() मेथड्स दोनों किसी भी डेटा प्रकार को स्ट्रिंग में बदलने के लिए उपयोग किए जाते हैं। Char को स्ट्रिंग में बदलने के लिए, वे दोनों समान रूप से कार्य करते हैं। प्रोग्रामिंग में, डेटा

  1. - ऐरे को JavaScript स्ट्रिंग में कैसे बदलें?

    ऐरे को JavaScript स्ट्रिंग में बदलने के लिए, toString() मेथड का उपयोग करें। JavaScript ऐरे toString() मेथड निर्दिष्ट ऐरे और उसके एलिमेंट्स के स्रोत कोड को दर्शाने वाली स्ट्रिंग लौटाता है। उदाहरण ऐरे को स्ट्रिंग में बदलने के लिए निम्न कोड चलाएं: <html> <head> <title>JavaScrip

  1. Android में Bitmap को बाइट ऐरे में कैसे कन्वर्ट करें? Android में Bitmap को बाइट ऐरे में कैसे कन्वर्ट करें?

    Android में Bitmap ↔ Byte Array कन्वर्जन यह उदाहरण दर्शाता है कि Bitmap को ByteArrayOutputStream के माध्यम से बाइट ऐरे में कैसे कन्वर्ट करें, और वापस बाइट ऐरे से Bitmap कैसे बनाएं। यह इमेज स्टोरेज, नेटवर्क ट्रांसमिशन, या डेटाबेस सेविंग के लिए उपयोगी है। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में