簡體   English   中英

如何分割字節數組

[英]How to split byte array

它是分割字節數組並查看其工作方式的簡單代碼。 但是問題是我得到了奇怪的輸出。

    public static void SplitArayUsingLinq()

    {
        int i = 3;
        string data = "123456789";
        byte[] largeBytes = Encoding .Unicode .GetBytes (data);
        byte[] first = largeBytes.Take(i).ToArray();
        byte[] second = largeBytes.Skip(i).ToArray();
        string firststring = Encoding.Unicode .GetString (first);
        string secondstring = Encoding.Unicode.GetString(second);
        Console.WriteLine(" first : " +firststring);
        Console.WriteLine(" second : " +secondstring);

    }

當i = 3的值時,我得到:

在此處輸入圖片說明

當i = 4的值時,我得到:

在此處輸入圖片說明

在這兩種情況下,我都會得到奇怪的輸出。 似乎無論給定i的值如何,程序似乎都考慮它的一半。 誰能告訴我為什么會這樣? 問題到底出在哪里?

Unicode每個字符使用兩個字節,因此,即使i值也可以使用,並且占用的字母數只有一半。 如果只想拆分一個字符串,則執行String.SubString會容易String.SubString

int i = 3;
string data = "123456789";
string firststring = data.SubString(0,i);
string secondstring = data.SubString(i+1);

Console.WriteLine(" first : " +firststring);
Console.WriteLine(" second : " +secondstring);

我只是將Unicode更改為UTF8,問題已解決。 感謝所有回答和評論的人。

更新:

正確的代碼是:

    public static void SplitArayUsingLinq()

    {
        int i = 3;
        string data = "123456789";
        byte[] largeBytes = Encoding.UTF8.GetBytes (data);
        byte[] first = largeBytes.Take(i).ToArray();
        byte[] second = largeBytes.Skip(i).ToArray();
        string firststring = Encoding.UTF8.GetString (first);
        string secondstring = Encoding.UTF8.GetString(second);
        Console.WriteLine(" first : " +firststring);
        Console.WriteLine(" second : " +secondstring);

    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM