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 ??
Annonceindlæg fra Trustworks
Tillid i en Zero-Trust verden
Med voksende trusler, nye EU-krav og øget kompleksitet er cybersikkerhed nu en central ledelsesopgave på linje med strategi og økonomi.
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); } } }