2013-03-15 8 views
28

मैं बाइट सरणी कि CA ,FA,21,33जावा में हेक्सस्ट्रिंग से बाइट सरणी को कैसे परिवर्तित करें?

तरह स मान से मिलकर है लेकिन मैं एक भी तत्व CAFA2133 रूप JList में उन्हें सूचीबद्ध करना चाहते हैं। उन्हें जेएलिस्ट में सूचीबद्ध करने के लिए मुझे लगता है कि मुझे इसे string में परिवर्तित करने की आवश्यकता है। तो कोई सिफारिश?

उत्तर

43

आप String.format() और Formatter विनिर्देशों को देखने की जरूरत है।

उदा।

String.format("%02x", byteValue);

सरणी के माध्यम से दोहराएं और एक StringBuilder

+1

धन्यवाद जो काम करता है! – hiii

+0

अच्छा और सरल। अन्य डुप्लिकेट प्रश्न और उत्तरों पर टेक्स्ट की दीवार के माध्यम से जाने की कोई ज़रूरत नहीं है :) – andrei

+1

यह काम करता है, लेकिन बाइट ऑपरेशंस – darkled

0

आप अपने प्रत्येक नंबर को हेक्साडेसिमल में एक स्ट्रिंग में बदलने के लिए Integer.toStringint i, int radix) का उपयोग कर सकते हैं, और फिर उन्हें एक साथ जोड़ सकते हैं। अब आपको बस अपने बाइट्स को int में प्राप्त करना होगा।

4

कैसे के बारे में:

public static String bytesToHex(byte[] bytes) { 
    final char[] hexArray = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; 
    char[] hexChars = new char[bytes.length * 2]; 
    int v; 
    for (int j = 0; j < bytes.length; j++) { 
     v = bytes[j] & 0xFF; 
     hexChars[j * 2] = hexArray[v >>> 4]; 
     hexChars[j * 2 + 1] = hexArray[v & 0x0F]; 
    } 
    return new String(hexChars); 
} 

Source

+2

डुप्लिकेट प्रश्न से कॉपी और पेस्ट की तरह दिखता है। आपको उस स्रोत का कम से कम उल्लेख करना चाहिए जहां से आपने इसकी प्रतिलिपि बनाई थी। – MrSmith42

+3

उसके पास उत्तर – ant

+3

@ श्रीस्मिथ 42 के हिस्से के रूप में स्रोत लिंक है: मैंने स्रोत को आपके लिए बोल्ड में रखा है;) – Burkhard

0

करने के लिए प्रत्येक String.format() परिणाम संलग्न Integer के toHexString का संदर्भ लें। अपने byte को int में कनवर्ट करना और उसके बाद परिणामी स्ट्रिंग प्राप्त करना चाल करना चाहिए। बेशक, आपको स्ट्रिंग्स को StringBuilder के साथ जोड़ना होगा।

0

यदि यह सरणी 4 बाइट लंबी है, तो आप शायद बाइट्स को संयोजित कर सकते हैं और Integer.toString (int, int) विधि का उपयोग कर सकते हैं।

byte[] array = /* initialization */; 
int x = 0; 
for (int i = 0, l = Math.min(array.length, 4); i < l; i++) { 
    x <<= 8; 
    x |= (array[i] & 0xFF); 
} 
String hex = Integer.toString(x, 16); 
45
public static String bytesToHex(byte[] in) { 
    final StringBuilder builder = new StringBuilder(); 
    for(byte b : in) { 
     builder.append(String.format("%02x", b)); 
    } 
    return builder.toString(); 
} 
1

इस विधि क्या करना चाहिए कि हेक्स स्ट्रिंग वापस जाने के लिए एक पैरामीटर के रूप बाइट सरणी में you..pass के लिए ...

private static String convertToHexString(byte[] data) { 
StringBuffer buf = new StringBuffer(); 
for (int i = 0; i < data.length; i++) { 
    int halfbyte = (data[i] >>> 4) & 0x0F; 
    int two_halfs = 0; 
    do { 
     if ((0 <= halfbyte) && (halfbyte <= 9)) 
      buf.append((char) ('0' + halfbyte)); 
     else 
      buf.append((char) ('a' + (halfbyte - 10))); 
      halfbyte = data[i] & 0x0F; 
     } while(two_halfs++ < 1); 
    } 
return buf.toString(); 
} 

आशा व्यक्त की कि मदद करता है ..

0
import java.util.HashMap; 

public class NumUtil 
{ private static HashMap<Byte,char[]>byteToHex=new HashMap<Byte, char[]>(); 
    static 
    { for(int i=0;i<16;++i) 
      byteToHex.put((byte)i, new char[]{'0',Integer.toHexString(i).charAt(0)}); 
     for(int i=16;i<256;++i) 
      byteToHex.put((byte)i, Integer.toHexString(i).toCharArray()); 
    } 
    public static String toHexString(byte[]bytes) 
    { StringBuilder stringBuilder = new StringBuilder(bytes.length*2); 
     for(byte b:bytes) 
      stringBuilder.append(byteToHex.get(b)); 
     return stringBuilder.toString(); 
    } 
} 
संबंधित मुद्दे