konwersja char na int a rodzaj kodowania

0

Chce dokonać konwersji z char na int ale domyślnie konwersja dokonuje się według standardu ISO-8859-1 . Czyli trzecia "kolumna" w tabeli ponizej a ja potrzebuje aby po
konwersji na int miec wyniki jak w "kolumnie" drugiej.

 
Hex        DEC     ZNAK      ISO-8859-1 DEC

0x00	   0	  @   	         64
0x01	   1	  £	        163
0x02	   2	  $	         36
0x03	   3	  ¥	        165
0x04	   4	  è	        232
0
char c = '5';
int i = int.Parse(c.ToString()); //i = 5

O to chodziło?

0

Źle napisałem nie trzecie tylko 4 kolumna . Chodzi dokładnie o to że jak konwertuje np. znak @ do inta to mam wynik 64 a ja potrzebuje 0 , albo jak konwertuje znak '$' to otrzymuje 36 a ja potrzebuje 2. Cała tabela tu : http://www.dreamfabric.com/sms/default_alphabet.html .

Korzystałem z klasy Encoding i szukałem w petli jakiegos kodowania ktore by pasowalo ale nic nie znajduje (nie wiem czy dobrze rozumuje)

 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace chatToDec
{
    class Program
    {
        static void Main(string[] args)
        {
            int dec = 0;

            for (int i = 0; i < 67000; ++i)
            {
                try
                {
                    dec = Chr(Asc('Ç',i),i);

                        if(dec==9)
                        {
                            Console.WriteLine("*** " + i);
                            break;
                        }
                }
                catch{}
            }



                Console.WriteLine(dec.ToString());

            Console.Read();
        }

        public static byte Asc(char src,int iso)
        {
            return (System.Text.Encoding.GetEncoding(iso).GetBytes(src +
            "")[0]);
        }

        public static char Chr(byte src,int iso)
        {
            return (System.Text.Encoding.GetEncoding(iso).GetChars(new byte[] { src })[0]);
        }
    }
}

0

Ten kod to jakaś masakra po podwójnej dawce absyntu. Zwłaszcza ten fragment: for (int i = 0; i < 67000; ++i)

Z tego co widzę, to chcesz pobrać wartość znaku w kodowaniu GSM 03.38. Z tego co wiem, to w .NET nie ma kodowania tego typu, trzeba je zaimplementować samemu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1