[英]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.