2008-11-03 12 views
8

डेल्फी 200 9 में टीबीइट्स को यूनिकोड स्ट्रिंग में घोषित बाइट्स की सरणी को परिवर्तित करने का सबसे अच्छा तरीका क्या है? मेरे विशेष मामले में, टीबीइट्स सरणी में पहले से ही यूटीएफ -16 एन्कोडेड डेटा है (प्रत्येक चार के लिए 2 बाइट)।टीबीइट्स (यूटीएफ -16) को एक स्ट्रिंग में बदलने का सबसे अच्छा तरीका क्या है?

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

MyString := string(myBytes); 

यदि नहीं, तो स्ट्रिंग परिणाम (यह भी शायद एक पढ़ा उल्लंघन कितना समय याद में एक # 0 सामना करने के लिए ले लिया पर निर्भर करता है का कारण बन सकता) अंत में यादृच्छिक डेटा होगा।

यदि मैं ToBytes फ़ंक्शन का उपयोग करता हूं, तो यह 't' # 0'e '# 0' '# 0' नहीं '# 0 देता है, जो मैं नहीं चाहता हूं।

उत्तर

13

मैं

TEncoding.Unicode.GetString(MyByteArray); 
8

स्ट्रिंगऑफ टीबीइट्स को यूनिकोडस्ट्रिंग में परिवर्तित करता है। बाइट्सऑफ एक यूनिकोडस्ट्रिंग को टीबीइट्स में परिवर्तित करता है।

+0

धन्यवाद ब्रूस का उपयोग कर समाप्त हो गया है, मैं अपने मूल प्रश्न संशोधित रूप में यह काफी विशेष नहीं था। टीबीइट्स सरणी utf16 डेटा के रूप में एन्कोड किया गया है, इसलिए ToBytes काम नहीं करता है। –

+0

मीठा। 8 अक्षरों के रूप में सरल: स्ट्रिंगऑफ :) – Ampere

4

यदि आपके टीबीइट्स में यूटीएफ -16 वर्ण हैं, तो WideStringOf और WideBytesOf देखें।

संबंधित मुद्दे

 संबंधित मुद्दे