unsafe public static string ReadASCIIString(FileReader reader, int length) { StringBuilder text = new StringBuilder(); fixed(byte *bytes = reader.ReadBytes(length)) { int index = 0; while (index < length && bytes[index] != 0) { switch (bytes[index]) { case 0x20: text.Append(' '); break; case 0x21: text.Append('!'); break; case 0x22: text.Append('\"'); break; case 0x23: text.Append('#'); break; case 0x24: text.Append('$'); break; case 0x25: text.Append('%'); break; case 0x26: text.Append('&'); break; case 0x27: text.Append('\''); break; case 0x28: text.Append('('); break; case 0x29: text.Append(')'); break; case 0x2A: text.Append('*'); break; case 0x2B: text.Append('+'); break; case 0x2C: text.Append(','); break; case 0x2D: text.Append('-'); break; case 0x2E: text.Append('.'); break; case 0x2F: text.Append('/'); break; case 0x30: text.Append('0'); break; case 0x31: text.Append('1'); break; case 0x32: text.Append('2'); break; case 0x33: text.Append('3'); break; case 0x34: text.Append('4'); break; case 0x35: text.Append('5'); break; case 0x36: text.Append('6'); break; case 0x37: text.Append('7'); break; case 0x38: text.Append('8'); break; case 0x39: text.Append('9'); break; case 0x3A: text.Append(':'); break; case 0x3B: text.Append(';'); break; case 0x3C: text.Append('<'); break; case 0x3D: text.Append('='); break; case 0x3E: text.Append('>'); break; case 0x3F: text.Append('?'); break; case 0x40: text.Append('@'); break; case 0x41: text.Append('A'); break; case 0x42: text.Append('B'); break; case 0x43: text.Append('C'); break; case 0x44: text.Append('D'); break; case 0x45: text.Append('E'); break; case 0x46: text.Append('F'); break; case 0x47: text.Append('G'); break; case 0x48: text.Append('H'); break; case 0x49: text.Append('I'); break; case 0x4A: text.Append('J'); break; case 0x4B: text.Append('K'); break; case 0x4C: text.Append('L'); break; case 0x4D: text.Append('M'); break; case 0x4E: text.Append('N'); break; case 0x4F: text.Append('O'); break; case 0x50: text.Append('P'); break; case 0x51: text.Append('Q'); break; case 0x52: text.Append('R'); break; case 0x53: text.Append('S'); break; case 0x54: text.Append('T'); break; case 0x55: text.Append('U'); break; case 0x56: text.Append('V'); break; case 0x57: text.Append('W'); break; case 0x58: text.Append('X'); break; case 0x59: text.Append('Y'); break; case 0x5A: text.Append('Z'); break; case 0x5B: text.Append('['); break; case 0x5C: text.Append('\\'); break; case 0x5D: text.Append(']'); break; case 0x5E: text.Append('^'); break; case 0x5F: text.Append('_'); break; case 0x60: text.Append('`'); break; case 0x61: text.Append('a'); break; case 0x62: text.Append('b'); break; case 0x63: text.Append('c'); break; case 0x64: text.Append('d'); break; case 0x65: text.Append('e'); break; case 0x66: text.Append('f'); break; case 0x67: text.Append('g'); break; case 0x68: text.Append('h'); break; case 0x69: text.Append('i'); break; case 0x6A: text.Append('j'); break; case 0x6B: text.Append('k'); break; case 0x6C: text.Append('l'); break; case 0x6D: text.Append('m'); break; case 0x6E: text.Append('n'); break; case 0x6F: text.Append('o'); break; case 0x70: text.Append('p'); break; case 0x71: text.Append('q'); break; case 0x72: text.Append('r'); break; case 0x73: text.Append('s'); break; case 0x74: text.Append('t'); break; case 0x75: text.Append('u'); break; case 0x76: text.Append('v'); break; case 0x77: text.Append('w'); break; case 0x78: text.Append('x'); break; case 0x79: text.Append('y'); break; case 0x7A: text.Append('z'); break; case 0x7B: text.Append('{'); break; case 0x7C: text.Append('|'); break; case 0x7D: text.Append('}'); break; case 0x7E: text.Append('~'); break; case 0x7F: text.Append(' '); break; case 0x80: text.Append('Ђ'); break; case 0x81: text.Append('Ѓ'); break; case 0x82: text.Append('‚'); break; case 0x83: text.Append('ѓ'); break; case 0x84: text.Append('„'); break; case 0x85: text.Append('…'); break; case 0x86: text.Append('†'); break; case 0x87: text.Append('‡'); break; case 0x88: text.Append('€'); break; case 0x89: text.Append('‰'); break; case 0x8A: text.Append('Љ'); break; case 0x8B: text.Append('‹'); break; case 0x8C: text.Append('Њ'); break; case 0x8D: text.Append('Ќ'); break; case 0x8E: text.Append('Ћ'); break; case 0x8F: text.Append('Џ'); break; case 0x90: text.Append('ђ'); break; case 0x91: text.Append('‘'); break; case 0x92: text.Append('’'); break; case 0x93: text.Append('“'); break; case 0x94: text.Append('”'); break; case 0x95: text.Append('•'); break; case 0x96: text.Append('–'); break; case 0x97: text.Append('—'); break; case 0x98: text.Append(' '); break; case 0x99: text.Append('™'); break; case 0x9A: text.Append('љ'); break; case 0x9B: text.Append('›'); break; case 0x9C: text.Append('њ'); break; case 0x9D: text.Append('ќ'); break; case 0x9E: text.Append('ћ'); break; case 0x9F: text.Append('џ'); break; case 0xA0: text.Append(' '); break; case 0xA1: text.Append('Ў'); break; case 0xA2: text.Append('ў'); break; case 0xA3: text.Append('Ј'); break; case 0xA4: text.Append('¤'); break; case 0xA5: text.Append('Ґ'); break; case 0xA6: text.Append('¦'); break; case 0xA7: text.Append('§'); break; case 0xA8: text.Append('Ё'); break; case 0xA9: text.Append('©'); break; case 0xAA: text.Append('Є'); break; case 0xAB: text.Append('«'); break; case 0xAC: text.Append('¬'); break; case 0xAD: text.Append(' '); break; case 0xAE: text.Append('®'); break; case 0xAF: text.Append('Ї'); break; case 0xB0: text.Append('°'); break; case 0xB1: text.Append('±'); break; case 0xB2: text.Append('І'); break; case 0xB3: text.Append('і'); break; case 0xB4: text.Append('ґ'); break; case 0xB5: text.Append('µ'); break; case 0xB6: text.Append('¶'); break; case 0xB7: text.Append('·'); break; case 0xB8: text.Append('ё'); break; case 0xB9: text.Append('№'); break; case 0xBA: text.Append('є'); break; case 0xBB: text.Append('»'); break; case 0xBC: text.Append('ј'); break; case 0xBD: text.Append('Ѕ'); break; case 0xBE: text.Append('ѕ'); break; case 0xBF: text.Append('ї'); break; case 0xC0: text.Append('А'); break; case 0xC1: text.Append('Б'); break; case 0xC2: text.Append('В'); break; case 0xC3: text.Append('Г'); break; case 0xC4: text.Append('Д'); break; case 0xC5: text.Append('Е'); break; case 0xC6: text.Append('Ж'); break; case 0xC7: text.Append('З'); break; case 0xC8: text.Append('И'); break; case 0xC9: text.Append('Й'); break; case 0xCA: text.Append('К'); break; case 0xCB: text.Append('Л'); break; case 0xCC: text.Append('М'); break; case 0xCD: text.Append('Н'); break; case 0xCE: text.Append('О'); break; case 0xCF: text.Append('П'); break; case 0xD0: text.Append('Р'); break; case 0xD1: text.Append('С'); break; case 0xD2: text.Append('Т'); break; case 0xD3: text.Append('У'); break; case 0xD4: text.Append('Ф'); break; case 0xD5: text.Append('Х'); break; case 0xD6: text.Append('Ц'); break; case 0xD7: text.Append('Ч'); break; case 0xD8: text.Append('Ш'); break; case 0xD9: text.Append('Щ'); break; case 0xDA: text.Append('Ъ'); break; case 0xDB: text.Append('Ы'); break; case 0xDC: text.Append('Ь'); break; case 0xDD: text.Append('Э'); break; case 0xDE: text.Append('Ю'); break; case 0xDF: text.Append('Я'); break; case 0xE0: text.Append('а'); break; case 0xE1: text.Append('б'); break; case 0xE2: text.Append('в'); break; case 0xE3: text.Append('г'); break; case 0xE4: text.Append('д'); break; case 0xE5: text.Append('е'); break; case 0xE6: text.Append('ж'); break; case 0xE7: text.Append('з'); break; case 0xE8: text.Append('и'); break; case 0xE9: text.Append('й'); break; case 0xEA: text.Append('к'); break; case 0xEB: text.Append('л'); break; case 0xEC: text.Append('м'); break; case 0xED: text.Append('н'); break; case 0xEE: text.Append('о'); break; case 0xEF: text.Append('п'); break; case 0xF0: text.Append('р'); break; case 0xF1: text.Append('с'); break; case 0xF2: text.Append('т'); break; case 0xF3: text.Append('у'); break; case 0xF4: text.Append('ф'); break; case 0xF5: text.Append('х'); break; case 0xF6: text.Append('ц'); break; case 0xF7: text.Append('ч'); break; case 0xF8: text.Append('ш'); break; case 0xF9: text.Append('щ'); break; case 0xFA: text.Append('ъ'); break; case 0xFB: text.Append('ы'); break; case 0xFC: text.Append('ь'); break; case 0xFD: text.Append('э'); break; case 0xFE: text.Append('ю'); break; case 0xFF: text.Append('я'); break; default: text.Append(' '); break; } ++index; } } return(text.ToString()); }