簡體   English   中英

C#-解碼使用ISO-8859-1編碼的字符串

[英]C# - Decode strings encoded with ISO-8859-1

我編寫以下程序的目的是使用ISO-8859-1對一組字符串進行編碼。 我現在需要對其進行解碼。 因此,我應該收到“ 100、200、300,測試字符串一,測試字符串二,測試字符串三”的字樣。

class Program
{
    private const int ENC_INT_SEED = 2136;
    private const int ENC_CHAR_SEED = 43;
    private const int ENC_INT_VAL = 3765;
    private const int ENC_CHAR_VAL = 139;
    private const int ENC_DUMMY_COUNT = 17;

    static void Main(string[] args)
    {
        string fileName = @"C:\Users\User\Documents\Test.DTA";

        FileStream fs = new FileStream(fileName, FileMode.Create, 
                    FileAccess.Write);
        BinaryWriter bw = new BinaryWriter(fs);

        int dummy = 0;
        for (int i = 0; i < ENC_DUMMY_COUNT; i++)
        {
            bw.Write(dummy);
        }

        int int_seed = ENC_INT_SEED;
        char char_seed = (char)ENC_CHAR_SEED;            

        for (int i = 0; i < 30; i++)
        {

            SaveInt(100, bw, ref int_seed);
            SaveInt(200, bw, ref int_seed);
            SaveInt(300, bw, ref int_seed);

            SaveString("Test String One", bw, ref int_seed, ref char_seed);
            SaveString("Test String Two", bw, ref int_seed, ref char_seed);
            SaveString("Test String Three", bw, ref int_seed, ref 
            char_seed);

        }

        bw.Close();
        fs.Close();

        Console.ReadLine();
    }
    private static void SaveString(string str, BinaryWriter bw, ref int 
                     int_seed, ref char char_seed)
    {
        int len = str.Length;

        Encoding encLatin_1 = Encoding.GetEncoding("ISO-8859-1");
        byte[] c = encLatin_1.GetBytes(str);

        int_seed = int_seed + ENC_INT_VAL + len;
        bw.Write(int_seed);

        for (int i = 0; i < len; i++)
        {
            int temp = char_seed + ENC_CHAR_VAL + c[i];
            char_seed = (char)temp;
            c[i] = (byte)char_seed;
        }
        bw.Write(c, 0, len);
    }
    private static void SaveInt(int i, BinaryWriter bw, ref int seed)
    {
        seed = seed + ENC_INT_VAL + i;
        bw.Write(seed);
    }
}

我在解碼方面需要一些幫助,因為我不是這方面的專家,只是設法進行了編碼。 請幫忙

我不會為此而煩惱編寫自己的方法,因為C#內置了對編碼的支持:

byte[] inputBytes = // get your bytes

// There is built-in support for encodings in C#
string result = Encoding.GetEncoding("ISO-8859-1").GetString(inputBytes);

暫無
暫無

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

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