2012-01-03 14 views
56

मुझे आश्चर्य है कि क्या मुझे पता है कि string के लिए बाइट्स में कितनी देर तक सी # में पता है, किसी को भी पता है?बाइट्स में स्ट्रिंग के आकार को कैसे जानें?

+0

चेक बाहर [इस उत्तर] (http://stackoverflow.com/questions/472906/net-string-to-byte-array-c-sharp)। – dasblinkenlight

+9

क्या आप पूछ रहे हैं कि एक 'स्ट्रिंग' ऑब्जेक्ट कितनी मेमोरी है, या एक स्ट्रिंग का प्रतिनिधित्व कितने बाइट्स फ़ाइल पर लिखे जाने पर या नेटवर्क (यानी एन्कोडेड) पर भेजे जाने पर कितना बाइट होगा, क्योंकि ये दो पूरी तरह से अलग प्रश्न हैं। माजिजेक ने लगभग पूर्व का जवाब दिया, जबकि दीया ने उत्तरार्द्ध का जवाब दिया (कम से कम दो आम एन्कोडिंग के लिए)। –

+0

संभावित डुप्लिकेट [कितना बाइट ले जाएगा?] (Http://stackoverflow.com/questions/3967411/how-much-bytes-will-take) – nawfal

उत्तर

88

आप ASCII तरह एन्कोडिंग का उपयोग कर सकते System.Text.Encoding वर्ग का उपयोग करके बाइट प्रति एक चरित्र मिलता है।

या इस

System.Text.ASCIIEncoding.Unicode.GetByteCount(string); 
    System.Text.ASCIIEncoding.ASCII.GetByteCount(string); 
+10

बेवकूफ सवाल, लेकिन हम कैसे जानते होंगे कि यूनिकोड या ASCII कक्षा का उपयोग करना है यदि स्ट्रिंग में डेटा किसी तृतीय पक्ष फ़ाइल से आया है? –

+5

@ मैथ्यूलॉक आपको यूटीएफ 16 (या माजिजेक की 'लंबाई * आकार (चार)' का उपयोग करना चाहिए, जो एक ही परिणाम देना चाहिए क्योंकि प्रत्येक 'चार' यूटीएफ 16/2-बाइट्स है) यदि आप समान संख्या में बाइट्स को आंतरिक प्रतिनिधित्व के रूप में चाहते हैं एक स्ट्रिंग। यदि आप वास्तव में अपनी आंतरिक चरित्र सरणी में बाइट्स की संख्या के बजाय, संपूर्ण ऑब्जेक्ट की सटीक मात्रा लेना चाहते हैं, तो आप एक [अधिक सामान्य विधि] (http://stackoverflow.com/questions/1128315/ पर विचार कर सकते हैं) खोजने के आकार की वस्तु उदाहरण-इन-बाइट-इन-सी तेज)। – Bob

16
System.Text.ASCIIEncoding.Unicode.GetByteCount(yourString); 

या

System.Text.ASCIIEncoding.ASCII.GetByteCount(yourString); 
68

MSDN से प्रयास करें:

एक String वस्तु System.Char वस्तुओं है कि एक स्ट्रिंग प्रतिनिधित्व के एक अनुक्रमिक संग्रह है।

तो आप इस का उपयोग कर सकते हैं:

var howManyBytes = yourString.Length * sizeof(Char); 
+0

जहां तक ​​मैं डेटा संरचना की मूल बातें समझ सकता हूं, यह – LoneXcoder

+0

की तुलना करने के लिए सबसे अधिक 'पिनड' choise है, लंबाई सदस्य के आकार को ध्यान में रखना न भूलें। int howManyBytes = yourString.Length * sizeof (Char) + sizeof (int); –

+0

क्या होगा यदि मेरी स्ट्रिंग लंबाई int से बड़ी हो? –

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