বাইটগুলিতে স্ট্রিংয়ের আকারটি কীভাবে জানবেন?


103

আমি ভাবছি যদি আমি stringসি # তে কতদিন বাইটে জানতে পারি, কেউ কি জানেন?


পরীক্ষা করে দেখুন এই উত্তর
dasblinkenlight

11
আপনি কি জিজ্ঞাসা করছেন যে কোনও stringবস্তু কতটা মেমোরি व्यापায়, অথবা কোনও ফাইলের কাছে লিখিতভাবে বা নেটওয়ার্কের মাধ্যমে প্রেরণ করা হলে (যেমন এনকোডযুক্ত) কতগুলি বাইট স্ট্রিংয়ের উপস্থাপনাটি দখল করবে, কারণ সেগুলি দুটি সম্পূর্ণ ভিন্ন প্রশ্ন। মাঝিজেক প্রায় পূর্বেরটিকে উত্তর দিয়েছিলেন যখন দিয়া উত্তরটি উত্তর দেয় (কমপক্ষে দুটি সাধারণ এনকোডিংয়ের জন্য)।
অ্যালন গুরালেনেক


@ অ্যালন গুরালেনেক: ভালো কথা। আপনি কি জানেন যে নীচে দিয়া তার পরিবর্তে System.Text.Encoding.Unicode.GetByteCount ব্যবহার করার পরামর্শ দেয়নি কেন? কেন ASCIIEncoding অংশ?
জিওরজিম

@ জিওরগি: যেহেতু Unicodeএকটি স্থিতিশীল সম্পত্তি System.Text.Encoding, যার ভিত্তি শ্রেণি ASCIIEncoding, উভয় বিবৃতি আসলে একই রকম। আপনি সাবক্লাস থেকে একটি স্থিতিশীল সদস্য অ্যাক্সেস করতে পারেন (তবে এটি মূর্খতা হিসাবে বিবেচনা করা হয় না)।
অ্যালন গুরালেনেক

উত্তর:


131

System.Text.Encodingক্লাসটি ব্যবহার করে বাইট প্রতি একটি অক্ষর পেতে আপনি ASCII এর মতো এনকোডিং ব্যবহার করতে পারেন ।

বা এটি চেষ্টা করুন

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

13
বোকা প্রশ্ন, তবে স্ট্রিংয়ের ডেটা যদি কোনও তৃতীয় পক্ষের ফাইল থেকে আসে তবে আমরা কীভাবে ইউনিকোড বা এএসসিআইআই ক্লাস ব্যবহার করব তা জানব?
ম্যাথু লক

7
@ ম্যাথেললক আপনি যদি ইউআরএফএফ 16 ব্যবহার করতে পারেন (বা মজিদেকের Length * sizeof(Char), যা প্রতিটি Charইউটিএফ 16/2-বাইট হয় তবে একই ফলাফল দেওয়া উচিত ) যদি আপনি কোনও স্ট্রিংয়ের অভ্যন্তরীণ উপস্থাপনা হিসাবে একই সংখ্যক বাইট চান। আপনি যদি অভ্যন্তরীণ চরিত্রের অ্যারেতে কেবলমাত্র বাইটের সংখ্যার চেয়ে পুরো অবজেক্টটি যে মেমরির সঠিক পরিমাণটি গ্রহণ করতে চান তবে আপনি আরও সাধারণ পদ্ধতি বিবেচনা করতে পারেন ।
বব

91

এমএসডিএন থেকে :

একটি Stringঅবজেক্ট System.Charএকটি স্ট্রিং প্রতিনিধিত্ব করে এমন বস্তুর ক্রমিক সংগ্রহ collection

সুতরাং আপনি এটি ব্যবহার করতে পারেন:

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

যতদূর আমি ডেটা স্ট্রাকচারের বেসিকগুলি বুঝতে পারি এটি তুলনামূলকভাবে সবচেয়ে 'পাইড'
চয়েস

2
দৈর্ঘ্যের সদস্যের আকারটি বিবেচনা করতে ভুলবেন না। int howManyBytes = আপনার স্ট্রিং L দৈর্ঘ্য * আকারের (চর) + আকার (ইনট);
জোল্টন তিরিন্দা

আমার স্ট্রিংয়ের দৈর্ঘ্য ইন্টের চেয়ে বড় হলে কী হবে?
জুরিজ কস্তানোভ

এটি সঠিক উত্তর হওয়া উচিত। এছাড়াও। আপনি একই স্ট্রিংটি প্রেরণ করলে সার্ভারটি বাইটের পরিমাণ কী পরিমাণ তা পাবে en এটাই আমার দরকার ছিল।
ডায়েজগুই

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

অথবা

System.Text.ASCIIEncoding.ASCII.GetByteCount(yourString);
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.