Avatar billede es-web.dk Nybegynder
03. juli 2007 - 11:04 Der er 6 kommentarer og
1 løsning

Custom Encoding Class

Mit problem er at jeg skal lave en override på GetString() men for at jeg kan gøre dette vil jeg gerne se hvordan den som standart ser ud.

Jeg mener jeg på et tidspunkt har set et værktøj til at se hvad frameworket klasser indeholder men kan ikke huske hvor og hvad det hedder..

Nogen der kender sådan et værktøj til at se hvordan koden ser ud inde i en standart klasse ??
Avatar billede pidgeot Nybegynder
03. juli 2007 - 11:56 #1
Du tænker nok på Reflector: http://www.aisto.com/roeder/dotnet/
Avatar billede arne_v Ekspert
03. juli 2007 - 12:19 #2
Avatar billede arne_v Ekspert
03. juli 2007 - 12:24 #3
Jeg lavede den her kode til et amdet spm. for noget tid siden:

using System;
using System.Text;

namespace E
{
    public class SMSPDUEncoding : Encoding
    {
        public override int GetMaxByteCount(int charCount)
        {
            return charCount;
        }
        public override int GetMaxCharCount(int byteCount)
        {
            return byteCount;
        }
        public override int GetChars(byte[] bytes, int byteIndex, int byteCountint charIndex), char[] chars,
        {
            for(int i = 0; i < byteCount; i++)
            {
                if(bytes[byteIndex + i] == 0x1C)
                {
                    chars[charIndex + i] = 'Æ';
                }
                else if(bytes[byteIndex + i] == 0x0B)
                {
                    chars[charIndex + i] = 'Ø';
                }
                else if(bytes[byteIndex + i] == 0x0F)
                {
                    chars[charIndex + i] = 'Å';
                }
                else if(bytes[byteIndex + i] == 0x1D)
                {
                    chars[charIndex + i] = 'æ';
                }
                else if(bytes[byteIndex + i] == 0x0C)
                {
                    chars[charIndex + i] = 'ø';
                }
                else if(bytes[byteIndex + i] == 0x0E)
                {
                    chars[charIndex + i] = 'å';
                }
                else if(bytes[byteIndex + i] >= 32 && bytes[byteIndex + i] <= 126)
                {
                    chars[charIndex + i] = (char)bytes[byteIndex + i];
                }
                else
                {
                    throw new ArgumentException("Unsupported byte");
                }
            }
            return byteCount;
        }
        public override int GetCharCount(byte[] bytes, int index,int count)
        {
            return count;
        }
        public override int GetBytes(char[] chars, int charIndex, int charCountbyte[] bytes, int byteIndex),
        {
            for(int i = 0; i < charCount; i++)
            {
                if(chars[charIndex + i] == 'Æ')
                {
                    bytes[byteIndex + i] = 0x1C;
                }
                else if(chars[charIndex + i] == 'Ø')
                {
                    bytes[byteIndex + i] = 0x0B;
                }
                else if(chars[charIndex + i] == 'Å')
                {
                    bytes[byteIndex + i] = 0x0F;
                }
                else if(chars[charIndex + i] == 'æ')
                {
                    bytes[byteIndex + i] = 0x1D;
                }
                else if(chars[charIndex + i] == 'ø')
                {
                    bytes[byteIndex + i] = 0x0C;
                }
                else if(chars[charIndex + i] == 'å')
                {
                    bytes[byteIndex + i] = 0x0E;
                }
                else if(chars[charIndex + i] >= ' ' && chars[charIndex + i] <= '~')
                {
                    bytes[byteIndex + i] = (byte)chars[charIndex + i];
                }
                else
                {
                    throw new ArgumentException("Unsupported char");
                }
            }
            return charCount;
        }
        public override int GetByteCount(char[] chars, int index, int count)
        {
            return count;
        }
    }
    public class MainClass
    {
        public static void Main(string[] args)
        {
            string s = "ABCabcÆØÅæøå";
            Encoding enc = new SMSPDUEncoding();
            byte[] b = enc.GetBytes(s);
            Console.WriteLine(b[6] + " " + b[7] + " " + b[8] +
                              " " + b[9] + " " + b[10] + " " + b[11]);
            string s2 = enc.GetString(b);
            Console.WriteLine(s2);
        }
    }
}
Avatar billede es-web.dk Nybegynder
03. juli 2007 - 12:25 #4
Mange tak det var lige der jeg skulle bruge
Avatar billede es-web.dk Nybegynder
03. juli 2007 - 12:27 #5
Ja den har jeg kigget lidt på og det er også den jeg har brugt lidt af. Men har fundet ud af hvordan det var ved at kigge på hvordan den funktion jeg skulle bruge arbejde i virkligheden. Men mit problem er nu med tegn som f.eks. €¤ at det går i kage..
Avatar billede arne_v Ekspert
07. august 2007 - 22:21 #6
Hvis du skal have mere hjælp skal du nok uddybe "går i kage" !
Avatar billede arne_v Ekspert
22. september 2007 - 22:03 #7
all set ?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester