সি # তে স্ট্রিংকে বাইট অ্যারেতে রূপান্তর করা হচ্ছে


669

আমি ভিবি থেকে কিছু # কে রূপান্তর করছি। এই বিবৃতিটির বাক্য গঠনতে সমস্যা রয়েছে:

if ((searchResult.Properties["user"].Count > 0))
{
    profile.User = System.Text.Encoding.UTF8.GetString(searchResult.Properties["user"][0]);
}

আমি তখন নিম্নলিখিত ত্রুটিগুলি দেখতে পাচ্ছি:

তর্ক 1: 'অবজেক্ট' থেকে 'বাইট []' তে রূপান্তর করতে পারে না

'System.Text.Encoding.GetString (বাইট [])' র জন্য সর্বোত্তম ওভারলোডেড পদ্ধতি ম্যাচটিতে কিছু অবৈধ যুক্তি রয়েছে

আমি এই পোস্টের উপর ভিত্তি করে কোডটি ঠিক করার চেষ্টা করেছি , তবে এখনও কোনও সাফল্য পাইনি

string User = Encoding.UTF8.GetString("user", 0);

কোন পরামর্শ?


1
কি ধরণের searchResult.Properties["user"][0]? এটি byte[]প্রথমে কাস্ট করার চেষ্টা করুন
mshsayem

আমি যেদিকে যাচ্ছিলাম সেদিকে এমএসয়েম গেলেন। আপনি অনুসন্ধানের (byte[])ফলাফলটিতে কোনও কাস্ট মিস করছেন?
হ্যারিসন

2
কী ধরণের তা আপনাকে খুঁজে বের করতে Properties["user"][0]হবে। আপনি কি নিশ্চিতরূপে হন, তাহলে এটি একটি বাইট অ্যারের তারপর আপনি ভালো নিক্ষেপ করতে পারেনprofile.User = System.Text.Encoding.UTF8.GetString((byte[])searchResult.Properties["user"][0]);
keyboardP

1
দেখা যাচ্ছে যে এই সমস্ত গোলমালের দরকার নেই। সর্বোপরি এনকোডিং ছাড়াই ব্যবহারকারীর নামটি আনা যায়।
নওপটাইম

3
আপনি কেন সত্য উত্তর নির্বাচন করবেন না?
আলী

উত্তর:


1186

আপনার যদি ইতিমধ্যে একটি বাইট অ্যারে থাকে তবে আপনাকে সেই বাইট অ্যারে তৈরি করতে কী ধরণের এনকোডিং ব্যবহার করা হয়েছিল তা জানতে হবে।

উদাহরণস্বরূপ, যদি বাইট অ্যারেটি তৈরি করা হয়েছিল:

byte[] bytes = Encoding.ASCII.GetBytes(someString);

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

string someString = Encoding.ASCII.GetString(bytes);

আপনি যদি উত্তরাধিকারসূত্রে প্রাপ্ত কোডটিতে সন্ধান করতে পারেন, বাইট অ্যারে তৈরি করতে ব্যবহৃত এনকোডিংটি তখন আপনাকে সেট করা উচিত।


3
টিমোথি, আমি ভিবি কোডটি দেখেছি এবং আপনি উল্লিখিত হিসাবে আমি কোনও বাইট অ্যারে খুঁজে পাচ্ছি না।
নউপটাইম

আপনার অনুসন্ধানের ফলাফলগুলিতে, সম্পত্তি সম্পর্কিত ধরণের কী কী?
টিমোথি র‌্যান্ডাল

আমি কেবল দেখতে পাচ্ছি যে স্ট্রিং হিসাবে সংখ্যার আইটেম সংযুক্ত রয়েছে। আপনি যদি আমাকে জিজ্ঞাসা করছিলেন তবে তা নিশ্চিত কিনা।
নউপটাইম

16
@AndiAR চেষ্টা Encoding.UTF8.GetBytes (somestring)
OzBob

1
আমার পরিস্থিতির জন্য আমি জানতে পেরেছিলাম যে এনকোডিং.উনিকোড.গেটবাইটস কাজ করেছে (তবে এএসসিআইআই তা করেনি)
জেফ

106

প্রথম সব, যোগ System.Textনামস্থান

using System.Text;

তারপরে এই কোডটি ব্যবহার করুন

string input = "some text"; 
byte[] array = Encoding.ASCII.GetBytes(input);

এটি ঠিক করার আশা করি!


42

এছাড়াও আপনি নীচের মতো কোনও পদ্ধতি যুক্ত করতে একটি এক্সটেনশন পদ্ধতি ব্যবহার করতে পারেন string:

static class Helper
{
   public static byte[] ToByteArray(this string str)
   {
      return System.Text.Encoding.ASCII.GetBytes(str);
   }
}

এবং নীচের মত এটি ব্যবহার করুন:

string foo = "bla bla";
byte[] result = foo.ToByteArray();

12
আমি ASCII এনকোডিংটি ব্যবহার করে যাচ্ছি এই বিষয়টি অন্তর্ভুক্ত করার জন্য আমি সেই পদ্ধতির নাম পরিবর্তন করব। কিছু একটা ToASCIIByteArray। আমি যখন ASCII ব্যবহার করি কিছু লাইব্রেরি জানতে পারি এবং আমি ধরে নিচ্ছি যে এটি ইউটিএফ -8 বা আরও আধুনিক কিছু ব্যবহার করছে hate
টি ফাঁকা

30
var result = System.Text.Encoding.Unicode.GetBytes(text);

3
এটি গ্রহণযোগ্য উত্তর হওয়া উচিত, যেমন অন্য উত্তরগুলি ASCII এর পরামর্শ দেয় তবে এনকোডিংটি হয় ইউনিকোড (যা এটি ইউটিএফ 16) বা ইউটিএফ 8 হয়।
আবেল

26
static byte[] GetBytes(string str)
{
     byte[] bytes = new byte[str.Length * sizeof(char)];
     System.Buffer.BlockCopy(str.ToCharArray(), 0, bytes, 0, bytes.Length);
     return bytes;
}

static string GetString(byte[] bytes)
{
     char[] chars = new char[bytes.Length / sizeof(char)];
     System.Buffer.BlockCopy(bytes, 0, chars, 0, bytes.Length);
     return new string(chars);
}

এটি সারোগেট জুটির পরিসরে পড়ে এমন অক্ষরের জন্য ব্যর্থ হবে .. গেটবাইটসের এমন একটি বাইট অ্যারে থাকবে যা শেষের দিকে সারোগেট জোড়ের জন্য একটি সাধারণ চর মিস করে। গেটস্ট্রিংয়ের শেষে খালি অক্ষর থাকবে। এটি কাজ করার একমাত্র উপায় হ'ল মাইক্রোসফ্টের ডিফল্ট যদি ইউটিএফ 32 হয়, বা যদি সার্গেট জুড়ি রেঞ্জের অক্ষরগুলিকে অনুমতি না দেওয়া হয়। নাকি এমন কিছু আছে যা আমি দেখছি না? সঠিক উপায় হ'ল "এনকোড" স্ট্রিংকে বাইটে into
জেরার্ড ওনিল

সঠিক, বিস্তৃত পরিসরের জন্য আপনি # টিমোথি র্যান্ডাল এর সমাধানের মতো কিছু ব্যবহার করতে পারেন: সিস্টেম ব্যবহার করে; System.Text ব্যবহার করে; নেমস্পেসের উদাহরণ {পাবলিক ক্লাস প্রোগ্রাম {পাবলিক স্ট্যাটিক অকার্যকর মেইন (স্ট্রিং [] আরগস) {স্ট্রিং এস 1 = "হ্যালো ওয়ার্ল্ড"; স্ট্রিং এস 2 = "שלום עולם"; স্ট্রিং এস 3 = "你好 , 世界!"; Console.WriteLine (Encoding.UTF8.GetString (Encoding.UTF8.GetBytes (S1))); Console.WriteLine (Encoding.UTF8.GetString (Encoding.UTF8.GetBytes (S2))); Console.WriteLine (Encoding.UTF8.GetString (Encoding.UTF8.GetBytes (S3))); }}}
এরান যোগেভ

17

কেন এনকোডিং.ডিফল্ট ব্যবহার করা উচিত নয় ...

@ র্যান্ডাল এর উত্তর ব্যবহার করে Encoding.Default, তবে মাইক্রোসফ্ট এর বিরুদ্ধে সতর্কতা উত্থাপন করেছে :

বিভিন্ন কম্পিউটার ডিফল্ট হিসাবে বিভিন্ন এনকোডিং ব্যবহার করতে পারে এবং একটি কম্পিউটারে ডিফল্ট এনকোডিং পরিবর্তন করতে পারে। আপনি যদি কম্পিউটারের মধ্যে প্রবাহিত ডেটা এনকোড এবং ডিকোড করতে ডিফল্ট এনকোডিং ব্যবহার করেন বা একই কম্পিউটারে বিভিন্ন সময়ে পুনরুদ্ধার করেন তবে এটি সেই ডেটাটি ভুলভাবে অনুবাদ করতে পারে। এছাড়াও, ডিফল্ট সম্পত্তি দ্বারা ফিরে আসা এনকোডিং কোড পৃষ্ঠা দ্বারা সমর্থিত অক্ষরগুলিতে অসমর্থিত অক্ষরগুলিকে মানচিত্র করতে সেরা-ফিট ফলব্যাক ব্যবহার করে। এই কারণে, ডিফল্ট এনকোডিং ব্যবহার করার পরামর্শ দেওয়া হয় না। এনকোডেড বাইটগুলি সঠিকভাবে ডিকোড করা হয়েছে তা নিশ্চিত করতে আপনার ইউনিকোড এনকোডিং যেমন ইউটিএফ 8 এনকোডিং বা ইউনিকোড এঙ্কোডিং ব্যবহার করা উচিত। একই ফর্ম্যাটটি এনকোডিং এবং ডিকোডিংয়ের জন্য ব্যবহৃত হচ্ছে তা নিশ্চিত করতে আপনি একটি উচ্চ-স্তরের প্রোটোকলও ব্যবহার করতে পারেন।

ডিফল্ট এনকোডিংটি কী তা যাচাই করতে, ব্যবহার করুন Encoding.Default.WindowsCodePage(আমার ক্ষেত্রে 1250 - এবং দুঃখের বিষয়, সিপি 1250 এনকোডিংয়ের কোনও পূর্বনির্ধারিত শ্রেণি নেই তবে অবজেক্টটি পুনরুদ্ধার করা যেতে পারেEncoding.GetEncoding(1250) )।

Encoding.ASCII 7 বিট হয়, সুতরাং এটি আমার ক্ষেত্রেও কার্যকর হয় না:

byte[] pass = Encoding.ASCII.GetBytes("šarže");
Console.WriteLine(Encoding.ASCII.GetString(pass)); // ?ar?e

... এবং এর পরিবর্তে কেন ইউটিএফ -8 এনকোডিং ব্যবহার করা উচিত ...

ডিফল্ট এনকোডিং বিভ্রান্তিমূলক:। নেট প্রকৃত ডিফল্ট হিসাবে সর্বত্র ইউটিএফ -8 ব্যবহার করে (8 বিট এনকোডিংগুলি 20 এর শেষের দিকে অচল হয়ে পড়েছে, শতাব্দী, পরীক্ষা করুন Console.OutputEncoding.EncodingName * দেখুন) সুতরাং কোডটিতে আপনি যে ধ্রুবকটি সংজ্ঞায়িত করেছেন তা ডিফল্টরূপে ইউটিএফ -8 এনকোডড রয়েছে - তাই ডেটা উত্সটি বিভিন্ন এনকোডিং না করা থাকলে এটিকে ব্যবহার করা উচিত।

* এটি আমার ক্ষেত্রে এটি ইউটিএফ -8 যা সরাসরি মিথ্যা: chcp উইন্ডোজ কনসোল থেকে (সেন্টিমিটার) 852 প্রদান করে - এবং এটি পরিবর্তন করা উচিত নয়, কারণ স্থানীয়করণ সিস্টেম কমান্ডগুলি (পিংয়ের মতো) এই কোডকেজটিকে হার্ডকোড করেছে

মাইক্রোসফ্টের সুপারিশ অনুসরণ করে:

var utf8 = new UTF8Encoding();
byte[] pass = utf8.GetBytes("šarže");
Console.WriteLine(utf8.GetString(pass)); // šarže

Encoding.UTF8 অন্যদের দ্বারা প্রস্তাবিত উদাহরণটি ইউটিএফ -8 এনকোডিং এবং এটি সরাসরি বা হিসাবে ব্যবহার করা যেতে পারে

var utf8 = Encoding.UTF8 as UTF8Encoding;

... তবে এটি সর্বদা ব্যবহৃত হয় না

বাইট অ্যারেগুলির এনকোডিংটি পশ্চিমা দেশগুলির ইউনিকোডে "কেবলমাত্র কাজ করা" উচিত, তবে আপনি আপনার প্রোগ্রামটিকে কিছুটা কম-সমর্থিত অঞ্চলে (যেমন এখানে পূর্ব ইউরোপের মতো) স্থানান্তরিত হওয়ার সাথে সাথে এটি একটি আসল গোলযোগ: চেক প্রজাতন্ত্রের উইন্ডোজ ডিফল্ট ব্যবহার করে (২০২০ সালে!) কনসোলের জন্য এমএস অ-মানক 852 (ওরফে ল্যাটিন -2), উইন্ডোজ ওএম হিসাবে 1250, ইউটিএফ -8 (65001) নতুন নেট হিসাবে ডিফল্ট এবং আমাদের মনে রাখা উচিত যে কিছু পশ্চিমা ইইউ 8 বিট ডেটা এখনও 1252-এ রয়েছে, পূর্ব পূর্ব ইউরোপের পশ্চিমা স্ট্যান্ডার্ডটি ছিল ISO-8859-2 (ওরফে ল্যাটিন -2, তবে 852-র মতো ল্যাটিন -2 নয়)। ASCII ব্যবহারের অর্থ টোফু এবং '?' এখানে. সুতরাং একবিংশ শতাব্দীর অর্ধেক অবধি ইউটিএফ -8 স্পষ্ট করে সেট করুন ।


12

আলীর জবাব বন্ধ করে দেওয়ার জন্য , আমি একটি এক্সটেনশন পদ্ধতির সুপারিশ করব যা আপনাকে ব্যবহার করতে চান এমন এনকোডিংয়ে আপনাকে বিকল্পভাবে পাস করার অনুমতি দেয়:

using System.Text;
public static class StringExtensions
{
    /// <summary>
    /// Creates a byte array from the string, using the 
    /// System.Text.Encoding.Default encoding unless another is specified.
    /// </summary>
    public static byte[] ToByteArray(this string str, Encoding encoding = Encoding.Default)
    {
        return encoding.GetBytes(str);
    }
}

এবং নীচের মত এটি ব্যবহার করুন:

string foo = "bla bla";

// default encoding
byte[] default = foo.ToByteArray();

// custom encoding
byte[] unicode = foo.ToByteArray(Encoding.Unicode);

2
নোট করুন যে Encoding encoding = Encoding.Defaultএকটি সংকলন সময় ত্রুটির ফলাফল ব্যবহার করে :CS1736 Default parameter value for 'encoding' must be a compile-time constant
ডগলাস গ্যাসকেল

11

অক্ষরগুলি 1 বাইট হলে কেবল নিম্নলিখিত পদ্ধতির কাজ করবে। (ডিফল্ট ইউনিকোড এটি 2 বাইট হওয়ায় কাজ করবে না)

public static byte[] ToByteArray(string value)
{            
    char[] charArr = value.ToCharArray();
    byte[] bytes = new byte[charArr.Length];
    for (int i = 0; i < charArr.Length; i++)
    {
        byte current = Convert.ToByte(charArr[i]);
        bytes[i] = current;
    }

    return bytes;
}

এটি সহজ রাখা


charএবং stringসংজ্ঞা অনুসারে UTF-16 হয়।
টম ব্লডজেট

হ্যাঁ ডিফল্টটি ইউটিএফ -16। আমি ইনপুট স্ট্রিংয়ের এনকোডিং সম্পর্কে কোনও অনুমান করছি না।
মন্দার সুদাম

এনকোডড পাঠ্য ছাড়া কোনও পাঠ্য নেই। আপনার ইনপুট টাইপ stringএবং অতএব UTF-16। ইউটিএফ -16 ডিফল্ট নয়; এটি সম্পর্কে কোন উপায় নেই। আপনি তারপরে char[]ইউটিএফ -16 কোড ইউনিটে বিভক্ত হয়ে যান । তারপরে আপনি কনভার্ট করুন.টোবাইটকে (চর) কল করুন যা কেবলমাত্র ইউ +0000 কে ইউ +00 এফএফ থেকে আইএসও -8859-1 তে রূপান্তর করতে পারে এবং অন্য কোনও কোডপয়েন্টগুলিকে ম্যাঙ্গেল করে।
টম ব্লডজেট

বোধ হয়। স্পষ্টতার জন্য ধন্যবাদ। আমার উত্তর আপডেট করা হচ্ছে।
মন্দার সুদাম

1
আমি মনে করি আপনি এখনও বেশ কয়েকটি প্রয়োজনীয় পয়েন্ট মিস করছেন। উপর ফোকাস char16 বিট হচ্ছে এবং Convert.ToByte()তাদের অর্ধেক নিক্ষেপ দূরে।
টম ব্লডজেট


6

জাস্টিনস্টলের সম্পাদনা (ইরান যোগেভের ব্লককপি ব্যবহার) এর একটি পরিমার্জন।

প্রস্তাবিত সমাধানটি এনকোডিং ব্যবহারের চেয়ে প্রকৃতপক্ষে দ্রুত। সমস্যা হ'ল এটি অসম দৈর্ঘ্যের বাইট অ্যারে এনকোডিংয়ের জন্য কাজ করে না। যেমনটি দেওয়া হয়েছে, এটি একটি বাহ্যিক ব্যতিক্রম উত্থাপন করে। স্ট্রিং থেকে ডিকোডিংয়ের সময় দৈর্ঘ্য 1 দ্বারা বাড়ানো ট্রেলিং বাইট ছেড়ে যায়।

আমার জন্য, প্রয়োজন আসে যখন আমি থেকে সঙ্কেতাক্ষরে লিখা চেয়েছিলেন DataTableকরতে JSON। আমি বাইনারি ক্ষেত্রগুলিকে স্ট্রিংগুলিতে এনকোড করার এবং স্ট্রিং থেকে পিছনে ডিকোড করার উপায় খুঁজছিলাম byte[]

সুতরাং আমি দুটি ক্লাস তৈরি করেছি - একটি যা উপরের সমাধানটি মোড় করে দেয় (যখন স্ট্রিংগুলি থেকে এনকোডিং করা হয় এটি সূক্ষ্ম হয়, কারণ দৈর্ঘ্য সর্বদা সমান হয়), এবং অন্যটি byte[]এনকোডিং পরিচালনা করে।

আমি অসম দৈর্ঘ্যের সমস্যাটি একটি একক অক্ষর যুক্ত করে সমাধান করেছি যা আমাকে বলে যে বাইনারি অ্যারের মূল দৈর্ঘ্য বিজোড় ('1') বা এমনকি ('0') ছিল কিনা

নিম্নরূপ:

public static class StringEncoder
{
    static byte[] EncodeToBytes(string str)
    {
        byte[] bytes = new byte[str.Length * sizeof(char)];
        System.Buffer.BlockCopy(str.ToCharArray(), 0, bytes, 0, bytes.Length);
        return bytes;
    }
    static string DecodeToString(byte[] bytes)
    {
        char[] chars = new char[bytes.Length / sizeof(char)];
        System.Buffer.BlockCopy(bytes, 0, chars, 0, bytes.Length);
        return new string(chars);
    }
}

public static class BytesEncoder
{
    public static string EncodeToString(byte[] bytes)
    {
        bool even = (bytes.Length % 2 == 0);
        char[] chars = new char[1 + bytes.Length / sizeof(char) + (even ? 0 : 1)];
        chars[0] = (even ? '0' : '1');
        System.Buffer.BlockCopy(bytes, 0, chars, 2, bytes.Length);

        return new string(chars);
    }
    public static byte[] DecodeToBytes(string str)
    {
        bool even = str[0] == '0';
        byte[] bytes = new byte[(str.Length - 1) * sizeof(char) + (even ? 0 : -1)];
        char[] chars = str.ToCharArray();
        System.Buffer.BlockCopy(chars, 2, bytes, 0, bytes.Length);

        return bytes;
    }
}

4

এই প্রশ্নের যথেষ্টবার অনেকবার উত্তর দেওয়া হয়েছে, তবে সি # 7.2 এবং স্প্যান প্রকারের প্রবর্তনের সাথে সাথে অনিরাপদ কোডে এটি করার একটি দ্রুত উপায় আছে:

public static class StringSupport
{
    private static readonly int _charSize = sizeof(char);

    public static unsafe byte[] GetBytes(string str)
    {
        if (str == null) throw new ArgumentNullException(nameof(str));
        if (str.Length == 0) return new byte[0];

        fixed (char* p = str)
        {
            return new Span<byte>(p, str.Length * _charSize).ToArray();
        }
    }

    public static unsafe string GetString(byte[] bytes)
    {
        if (bytes == null) throw new ArgumentNullException(nameof(bytes));
        if (bytes.Length % _charSize != 0) throw new ArgumentException($"Invalid {nameof(bytes)} length");
        if (bytes.Length == 0) return string.Empty;

        fixed (byte* p = bytes)
        {
            return new string(new Span<char>(p, bytes.Length / _charSize));
        }
    }
}

মনে রাখবেন যে বাইটগুলি একটি ইউটিএফ -16 এনকোডেড স্ট্রিং প্রতিনিধিত্ব করে (C # জমিতে "ইউনিকোড" নামে পরিচিত)।

কিছু দ্রুত বেঞ্চমার্কিং দেখায় যে উপরের পদ্ধতিগুলি তাদের এনকোডিং.উনিকড.গেটবাইটস (...) / গেটস্ট্রিং (...) মাঝারি আকারের স্ট্রিং (30-50 অক্ষর) বাস্তবায়নগুলির চেয়ে আরও দ্রুত এবং বৃহত্তর স্ট্রিংয়ের জন্য আরও দ্রুত faster এই পদ্ধতিগুলি মার্শাল.কপি (..) বা বাফার.মেমরিকপি (...) সহ পয়েন্টার ব্যবহারের চেয়ে দ্রুত বলে মনে হচ্ছে।


4

যদি, 'অনুসন্ধানের ফলাফলগুলি। প্রোপার্টি ["ব্যবহারকারী"] [0]' এর ফলাফলটি একটি স্ট্রিং:

if ( ( searchResult.Properties [ "user" ].Count > 0 ) ) {

   profile.User = System.Text.Encoding.UTF8.GetString ( searchResult.Properties [ "user" ] [ 0 ].ToCharArray ().Select ( character => ( byte ) character ).ToArray () );

}

মূল বিষয়টি হচ্ছে যে স্ট্রিংকে বাইটে রূপান্তর করা [] লিনকিউ ব্যবহার করে করা যেতে পারে:

.ToCharArray ().Select ( character => ( byte ) character ).ToArray () )

এবং বিপরীত:

.Select ( character => ( char ) character ).ToArray () )

3

কেউ কি এই কারণটি না করার কারণ দেখায়?

mystring.Select(Convert.ToByte).ToArray()

10
Convert.ToByte(char)আপনি যেমন ভাবেন ঠিক তেমন কাজ করে না। চরিত্রটি '2'বাইটে রূপান্তরিত হয়, বাইট 2নয় যা চরিত্রকে উপস্থাপন করে '2'mystring.Select(x => (byte)x).ToArray()পরিবর্তে ব্যবহার করুন।
জ্যাক 18

3

এটা আমার জন্য কাজ করে

byte[] bytes = Convert.FromBase64String(textString);

এটি কেবল তখনই কাজ করে যখন আপনার স্ট্রিংয়ে কেবল অজ, এজেড, 0-9, +, / থাকে। অন্য কোনো অক্ষর অনুমতি দেওয়া হয় de.wikipedia.org/wiki/Base64
Blechdose

2

আপনি খুব দ্রুত এবং দক্ষ রূপান্তর সম্পাদন করতে মেমোরি মার্শাল এপিআই ব্যবহার করতে পারেন । Stringস্পষ্টভাবে কাস্ট করা হবে ReadOnlySpan<byte>, হয় MemoryMarshal.Castগ্রহণ হিসাবে Span<byte>বা ReadOnlySpan<byte>একটি ইনপুট প্যারামিটার হিসাবে।

public static class StringExtensions
{
    public static byte[] ToByteArray(this string s) => s.ToByteSpan().ToArray(); //  heap allocation, use only when you cannot operate on spans
    public static ReadOnlySpan<byte> ToByteSpan(this string s) => MemoryMarshal.Cast<char, byte>(s);
}

নিম্নলিখিত মানদণ্ড পার্থক্য দেখায়:

Input: "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s,"

|                       Method |       Mean |     Error |    StdDev |  Gen 0 | Gen 1 | Gen 2 | Allocated |
|----------------------------- |-----------:|----------:|----------:|-------:|------:|------:|----------:|
| UsingEncodingUnicodeGetBytes | 160.042 ns | 3.2864 ns | 6.4099 ns | 0.0780 |     - |     - |     328 B |
| UsingMemoryMarshalAndToArray |  31.977 ns | 0.7177 ns | 1.5753 ns | 0.0781 |     - |     - |     328 B |
|           UsingMemoryMarshal |   1.027 ns | 0.0565 ns | 0.1630 ns |      - |     - |     - |         - |

0

এটি আমার জন্য কাজ, এর পরে আমি আমার ডাটাবেসে একটি বাইটিয়া ক্ষেত্রে আমার ছবিটি রূপান্তর করতে পারি।

using (MemoryStream s = new MemoryStream(DirEntry.Properties["thumbnailphoto"].Value as byte[]))
{
    return s.ToArray();
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.