2012-03-18 8 views
18

मेरे पास utf8 की एक स्ट्रिंग है।बाल्ट में कैल्क utf-8 स्ट्रिंग आकार?

मुझे इसका आकार प्राप्त करने की आवश्यकता है। (बाइट्स)

क्या यह हमेशा x2 है? // मेरा मतलब है 2

क्या इसके लिए कोई .NET फ़ंक्शन है?

पेज।

im मेरी नवीनतम question की वजह से यह सवाल पूछ रहा है ... मैं की जरूरत है (mempry मैप की फ़ाइल में) एक स्ट्रिंग की ऑफसेट (UTF8) calc के लिए - किसी अन्य प्रक्रिया से ..

+3

"मेरे पास utf8 की एक स्ट्रिंग है।" - .NET में नहीं। आपके पास या तो एक स्ट्रिंग है (जो यूटीएफ -16 है), या आपके पास बाइट्स की एक सरणी है जो यूटीएफ -8 एन्कोडेड स्ट्रिंग का प्रतिनिधित्व करती है। बाद के मामले में आप केवल 'ऐरे। लम्बाई' का उपयोग कर सकते हैं। – porges

+0

"x2" चीज़ के साथ ... क्या आप वाकई यूटीएफ -16 का उपयोग नहीं कर रहे हैं? –

+0

@Porges प्रत्येक char को 2 बाइट्स में दर्शाया जाता है - भले ही यह 0..127 एएससीआई तालिका से हो? –

उत्तर

42

नहीं, यह यूटीएफ -8 के लिए हमेशा x2 नहीं है और वास्तविक सामग्री के आधार पर परिवर्तन नहीं है। ASCII वर्णों के लिए यह 1 बाइट है, लेकिन बड़े कोड-पॉइंट मानों के लिए कई बाइट्स में जा सकता है। आप चाहते हैं:

string s = // your string 
int len = Encoding.UTF8.GetByteCount(s); 
+0

धन्यवाद मार्क ...... (कृपया मेरा संपादन देखें - यह देखने के लिए कि यह कहां से आता है .. और मैंने यह क्यों पूछा :) :) –

+0

@ रॉयई तो आप बाइट * स्वीकार करने वाले ओवरलोड का उपयोग करना चाहेंगे, लेकिन यह सटीक परिदृश्य पर निर्भर करता है –

+0

@MarcGravell क्षमा करें, ऐसा लगता है कि मैं आपको समझ नहीं पा रहा हूं ... कहें एक स्ट्रिंग है जिसमें नियमित वर्ण (0..127) और विशेष वर्ण होते हैं। ... इस तरह कुछ: 'string s =" abc אבג "; 'अब - मान लें कि मैं स्मृति में स्थान के अंत में जाना चाहता हूं .... मैं कैसे कैलक कर सकता हूं ** कितने बाइट ऑफसेट करने के लिए ** (mmf ...)? –

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