दिलचस्प पोस्ट
एसक्यूएल – समूह में उपनाम का उपयोग करके SwingUtilities.invokeLater क्या करता है? मैं एक HTML5 "संख्या" तत्व में संभावित निविष्टियों को कैसे सीमित कर सकता हूं? एंड्रॉइड सपोर्ट लाइब्रेरी अपडेट करें 23.2.0 कारण त्रुटि: XmlPullParserException बाइनरी XML फ़ाइल लाइन # 17 <वेक्टर> टैग की आवश्यकता है viewportWidth> 0 कैसे कैनवास में छवि जोड़ने के लिए एक विशेष प्रतिबद्ध में लेखक को बदलें कैसे सही बीन क्षेत्र का चयन करने के लिए? वास्तविक सूची ऑब्जेक्ट में एक स्ट्रिंग का प्रतिनिधित्व करने वाली सूची को परिवर्तित करना इरोटोथेनिस के छद्म खंड? मैं एक छवि में EXIF ​​डेटा कैसे जोड़ूं? Java में बिट स्तर पर इंटिजर्स आंतरिक रूप से कैसे प्रतिनिधित्व किया जाता है? अंतर के भीतर अंतर और आंतरिक एचटीएमएल क्या आम हास्केल ऑपरेटरों के लिए प्रचलित नाम हैं? किसी केस वर्ग के साथी में ओवरराइड कैसे करें मौजूदा टैब बंद करें

बाइट सरणी के लिए जावा पूर्णांक

मुझे एक पूर्णांक मिला: 1695609641 9 1695609641 9 1695609641

जब मैं विधि का उपयोग करता हूँ:

 String hex = Integer.toHexString(1695609641); system.out.println(hex); 

देता है:

 6510f329 

लेकिन मुझे एक बाइट सरणी चाहिए:

 byte[] bytearray = new byte[] { (byte) 0x65, (byte)0x10, (byte)0xf3, (byte)0x29}; 

मैं यह कैसे कर सकता हूं?

वेब के समाधान से एकत्रित समाधान "बाइट सरणी के लिए जावा पूर्णांक"

जावा एनआईओ के बाइटबफर का उपयोग करना बहुत आसान है:

 byte[] bytes = ByteBuffer.allocate(4).putInt(1695609641).array(); for (byte b : bytes) { System.out.format("0x%x ", b); } 

उत्पादन:

 0x65 0x10 0xf3 0x29 

कैसा रहेगा:

 public static final byte[] intToByteArray(int value) { return new byte[] { (byte)(value >>> 24), (byte)(value >>> 16), (byte)(value >>> 8), (byte)value}; } 

यह विचार मेरा नहीं है मैंने इसे dzone.com पर कुछ पोस्ट से लिया है ।

BigInteger.valueOf(1695609641).toByteArray()

 byte[] IntToByteArray( int data ) { byte[] result = new byte[4]; result[0] = (byte) ((data & 0xFF000000) >> 24); result[1] = (byte) ((data & 0x00FF0000) >> 16); result[2] = (byte) ((data & 0x0000FF00) >> 8); result[3] = (byte) ((data & 0x000000FF) >> 0); return result; } 

अमरूद का उपयोग करना:

 byte[] bytearray = Ints.toByteArray(1695609641); 
 byte[] conv = new byte[4]; conv[3] = (byte) input & 0xff; input >>= 8; conv[2] = (byte) input & 0xff; input >>= 8; conv[1] = (byte) input & 0xff; input >>= 8; conv[0] = (byte) input; 

नीचे दिए गए भाग कम से कम यूडीपी पर एक अंतर भेजने के लिए काम करते हैं।

बाइट सरणी के लिए int:

 public byte[] intToBytes(int my_int) throws IOException { ByteArrayOutputStream bos = new ByteArrayOutputStream(); ObjectOutput out = new ObjectOutputStream(bos); out.writeInt(my_int); out.close(); byte[] int_bytes = bos.toByteArray(); bos.close(); return int_bytes; } 

int के लिए बाइट सरणी:

 public int bytesToInt(byte[] int_bytes) throws IOException { ByteArrayInputStream bis = new ByteArrayInputStream(int_bytes); ObjectInputStream ois = new ObjectInputStream(bis); int my_int = ois.readInt(); ois.close(); return my_int; } 
 public static byte[] intToBytes(int x) throws IOException { ByteArrayOutputStream bos = new ByteArrayOutputStream(); DataOutputStream out = new DataOutputStream(bos); out.writeInt(x); out.close(); byte[] int_bytes = bos.toByteArray(); bos.close(); return int_bytes; } 

कक्षा org.apache.hadoop.hbase.util.Bytes में एक आसान बाइट [] रूपांतरण विधियों का एक गुच्छा है, लेकिन हो सकता है कि आप इस उद्देश्य के लिए पूरी परियोजना को पूरी HBase जार नहीं जोड़ना चाहें। यह आश्चर्य की बात है कि इस तरह की विधि न केवल एडीएआईडी को जेडीके से लापता है, बल्कि कॉमन्स io जैसे स्पष्ट लिब से भी।

मेरा प्रयास:

 public static byte[] toBytes(final int intVal, final int... intArray) { if (intArray == null || (intArray.length == 0)) { return ByteBuffer.allocate(4).putInt(intVal).array(); } else { final ByteBuffer bb = ByteBuffer.allocate(4 + (intArray.length * 4)).putInt(intVal); for (final int val : intArray) { bb.putInt(val); } return bb.array(); } } 

इसके साथ आप यह कर सकते हैं:

 byte[] fourBytes = toBytes(0x01020304); byte[] eightBytes = toBytes(0x01020304, 0x05060708); 

पूर्ण वर्ग यहां है: https://gist.github.com/superbob/6548493 , यह शॉर्ट्स या लंबे समय से आरंभ करने में सहायता करता है

 byte[] eightBytesAgain = toBytes(0x0102030405060708L); 
 integer & 0xFF 

पहले बाइट के लिए

 (integer >> 8) & 0xFF 

द्वितीय और लूप आदि के लिए, पहले से तैयार किए गए बाइट सरणी में लिखना थोड़ा गड़बड़, दुर्भाग्य से