EDIT (2018): @xinyongCheng द्वारा संपादित सिबलिंग उत्तर एक सरल दृष्टिकोण है, और स्वीकृत उत्तर होना चाहिए।
यदि प्लेटफ़ॉर्म के डिफ़ॉल्ट चार्ट में बाइट्स हैं, तो आपका दृष्टिकोण उचित होगा। आपके उदाहरण में, यह सच है क्योंकि k.getBytes()
प्लेटफ़ॉर्म के डिफ़ॉल्ट चारसेट में बाइट्स लौटाता है।
अधिक बार, आप एन्कोडिंग निर्दिष्ट करना चाहेंगे। हालाँकि, आपके द्वारा लिंक किए गए प्रश्न की तुलना में ऐसा करने का एक सरल तरीका है। स्ट्रिंग एपीआई एक विशेष एन्कोडिंग में स्ट्रिंग और एक बाइट [] सरणी के बीच परिवर्तित करने वाले तरीके प्रदान करता है। ये विधियाँ CharsetEncoder / CharsetDecoder का उपयोग करने का सुझाव देती हैं "जब डिकोडिंग [एन्कोडिंग] प्रक्रिया पर अधिक नियंत्रण आवश्यक होता है।"
किसी विशेष एन्कोडिंग में स्ट्रिंग से बाइट्स प्राप्त करने के लिए, आप एक भाई getBytes () विधि का उपयोग कर सकते हैं:
byte[] bytes = k.getBytes( StandardCharsets.UTF_8 );
एक स्ट्रिंग में एक विशेष एन्कोडिंग के साथ बाइट्स लगाने के लिए, आप एक अलग स्ट्रिंग निर्माता का उपयोग कर सकते हैं:
String v = new String( bytes, StandardCharsets.UTF_8 );
ध्यान दें कि ByteBuffer.array()
एक वैकल्पिक ऑपरेशन है। यदि आपने किसी सरणी के साथ अपने बाइटबफ़र का निर्माण किया है, तो आप सीधे उस सरणी का उपयोग कर सकते हैं। अन्यथा, यदि आप सुरक्षित रहना चाहते हैं, तो ByteBuffer.get(byte[] dst, int offset, int length)
बाइट से बाइट पाने के लिए बाइट सरणी में उपयोग करें।