Как поставить условие на количество букв/знаков? - C#
Формулировка задачи:
Сделан элемент управления, который считывает/записывает значения байтов с смещений в файле и преобразует их в буквы/знаки в текстовом поле в программе.
Код элемента управления (текстовое поле):
Как вместо этой строки?
Как вместо этой строки поставить условие если написано разное количество букв, то использовать одну из строк, при разном количестве букв?:
using System; using System.Collections.Generic; using System.Text; namespace Quicksilver { static class HeroMenuNameDecode { public static string Decode(byte[] bytess) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < bytess.Length; i++) { if (bytess[i] == 0xFF) // конец continue; if (dic.ContainsKey(bytess[i])) sb.Append(dic[bytess[i]]); else sb.Append("?"); } return sb.ToString(); } public static byte[] Encode(string text) { byte[] b = new byte[12] {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, }; char[] ch = text.ToCharArray(); for (int i = 0; i < ch.Length; i++) { foreach (var item in dic) { if (item.Value == ch[i].ToString()) { b[i] = item.Key; break; } } } return b; } static Dictionary<byte, string> dic = new Dictionary<byte, string> { {0x00, " "}, {0x01, "!"}, {0x20, "@"}, {0x21, "A"}, {0x22, "B"}, {0x23, "C"} // и т.д. }; } }
byte[] b = new byte[12] {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, };
byte[] b = new byte[12] {0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; //если ноль букв написано в текстовом поле, то использовать эту строку byte[] b = new byte[12] {0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; //если одна буква написана в текстовом поле, то использовать эту строку byte[] b = new byte[12] {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; //если пять букв, то использовать эту строку byte[] b = new byte[12] {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, }; //если десять букв, то использовать эту строку
Решение задачи: «Как поставить условие на количество букв/знаков?»
textual
Листинг программы
using System; using System.Collections.Generic; using System.Text; namespace Quicksilver { static class HeroMenuNameDecode { public static string Decode(byte[] bytes) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < bytes.Length; i++) { if (bytes[i] == 0xFF) // конец break; char val; if (dic.TryGetValue(bytes[i], out val)) sb.Append(val); else sb.Append("?"); } return sb.ToString(); } public static byte[] Encode(string text) { // строка не может быть длиннее 11 из-за размера массива ниже... // это ограничение можно убрать, сделав например // byte[] b = new byte[text.Length + 1]; if (text.Length > 11) throw new ArgumentException("text"); byte[] b = new byte[12]; for (int i = 0; i < text.Length + 1; i++) b[i] = 0xFF; for (int i = 0; i < text.Length; i++) { byte val; if (dic2.TryGetValue(text[i], out val)) b[i] = val; } return b; } static Dictionary<byte, char> dic = new Dictionary<byte, char> { {0x00, ' '}, {0x01, '!'}, {0x20, '@'}, {0x21, 'A'}, {0x22, 'B'}, {0x23, 'C'} // и т.д. }; static Dictionary<char, byte> dic2 = new Dictionary<char, byte>(); static HeroMenuNameDecode() { foreach (var item in dic) dic2[item.Value] = item.Key; } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д