Декодировать Hex в GSM 7 бит в C # - PullRequest
0 голосов
/ 27 января 2019

Я работаю в проекте с модулем A6 Gsm.Я могу отправить AT команду в модуль и получить ответ.Но проблема в варианте USSD.

Ответ приходит как HEX.Я хочу конвертировать этот шестнадцатеричный в GSM 7 бит.Я искал в Google, но потерпел неудачу с безнадежным.Затем я создаю собственный конвертер для c # с этой таблицей преобразования веб-сайтов.

7-битная таблица алфавитов GSM по умолчанию

Но я думаю, что это совсем не правильно.Итак, что я могу сделать сейчас?

Я плачу, необходимо решить эту проблему с помощью C #.Скажите, пожалуйста, как я могу преобразовать шестнадцатеричный код в GSM 7 бит.

Вот мой код:

    public string HexToGsm(string hexString)
    {
        Dictionary<string, string> hexGsmLib = new Dictionary<string, string>();

        hexGsmLib.Add("00", "@");
        hexGsmLib.Add("01", "£");
        hexGsmLib.Add("02", "$");
        hexGsmLib.Add("03", "¥");
        hexGsmLib.Add("04", "è");
        hexGsmLib.Add("05", "é");
        hexGsmLib.Add("06", "ù");
        hexGsmLib.Add("07", "ì");
        hexGsmLib.Add("08", "ò");
        hexGsmLib.Add("09", "Ç");
        hexGsmLib.Add("0A", "\n");
        hexGsmLib.Add("0B", "Ø");
        hexGsmLib.Add("0C", "ø");
        hexGsmLib.Add("0D", "\r");
        hexGsmLib.Add("0E", "Å");
        hexGsmLib.Add("0F", "å");
        hexGsmLib.Add("10", "Δ");
        hexGsmLib.Add("11", "_");
        hexGsmLib.Add("12", "Φ");
        hexGsmLib.Add("13", "Γ");
        hexGsmLib.Add("14", "Λ");
        hexGsmLib.Add("15", "Ω");
        hexGsmLib.Add("16", "Π");
        hexGsmLib.Add("17", "Ψ");
        hexGsmLib.Add("18", "Σ");
        hexGsmLib.Add("19", "Θ");
        hexGsmLib.Add("1A", "Ξ");
        hexGsmLib.Add("1B", "\\");
        hexGsmLib.Add("1C", "Æ");
        hexGsmLib.Add("1D", "æ");
        hexGsmLib.Add("1E", "ß");
        hexGsmLib.Add("1F", "É");
        hexGsmLib.Add("20", " ");
        hexGsmLib.Add("21", "!");
        hexGsmLib.Add("22", "\"");
        hexGsmLib.Add("23", "#");
        hexGsmLib.Add("24", "¤");
        hexGsmLib.Add("25", "%");
        hexGsmLib.Add("26", "&");
        hexGsmLib.Add("27", "'");
        hexGsmLib.Add("28", "(");
        hexGsmLib.Add("29", ")");
        hexGsmLib.Add("2A", "*");
        hexGsmLib.Add("2B", "+");
        hexGsmLib.Add("2C", ",");
        hexGsmLib.Add("2D", "-");
        hexGsmLib.Add("2E", ".");
        hexGsmLib.Add("2F", "/");
        hexGsmLib.Add("30", "0");
        hexGsmLib.Add("31", "1");
        hexGsmLib.Add("32", "2");
        hexGsmLib.Add("33", "3");
        hexGsmLib.Add("34", "4");
        hexGsmLib.Add("35", "5");
        hexGsmLib.Add("36", "6");
        hexGsmLib.Add("37", "7");
        hexGsmLib.Add("38", "8");
        hexGsmLib.Add("39", "9");
        hexGsmLib.Add("3A", ":");
        hexGsmLib.Add("3B", ";");
        hexGsmLib.Add("3C", "<");
        hexGsmLib.Add("3D", "=");
        hexGsmLib.Add("3E", ">");
        hexGsmLib.Add("3F", "?");
        hexGsmLib.Add("40", "¡");
        hexGsmLib.Add("41", "A");
        hexGsmLib.Add("42", "B");
        hexGsmLib.Add("43", "C");
        hexGsmLib.Add("44", "D");
        hexGsmLib.Add("45", "E");
        hexGsmLib.Add("46", "F");
        hexGsmLib.Add("47", "G");
        hexGsmLib.Add("48", "H");
        hexGsmLib.Add("49", "I");
        hexGsmLib.Add("4A", "J");
        hexGsmLib.Add("4B", "K");
        hexGsmLib.Add("4C", "L");
        hexGsmLib.Add("4D", "M");
        hexGsmLib.Add("4E", "N");
        hexGsmLib.Add("4F", "O");
        hexGsmLib.Add("50", "P");
        hexGsmLib.Add("51", "Q");
        hexGsmLib.Add("52", "R");
        hexGsmLib.Add("53", "S");
        hexGsmLib.Add("54", "T");
        hexGsmLib.Add("55", "U");
        hexGsmLib.Add("56", "V");
        hexGsmLib.Add("57", "W");
        hexGsmLib.Add("58", "X");
        hexGsmLib.Add("59", "Y");
        hexGsmLib.Add("5A", "Z");
        hexGsmLib.Add("5B", "Ä");
        hexGsmLib.Add("5C", "Ö");
        hexGsmLib.Add("5D", "Ñ");
        hexGsmLib.Add("5E", "Ü");
        hexGsmLib.Add("5F", "§");
        hexGsmLib.Add("60", "¿");
        hexGsmLib.Add("61", "a");
        hexGsmLib.Add("62", "b");
        hexGsmLib.Add("63", "c");
        hexGsmLib.Add("64", "d");
        hexGsmLib.Add("65", "e");
        hexGsmLib.Add("66", "f");
        hexGsmLib.Add("67", "g");
        hexGsmLib.Add("68", "h");
        hexGsmLib.Add("69", "i");
        hexGsmLib.Add("6A", "j");
        hexGsmLib.Add("6B", "k");
        hexGsmLib.Add("6C", "l");
        hexGsmLib.Add("6D", "m");
        hexGsmLib.Add("6E", "n");
        hexGsmLib.Add("6F", "o");
        hexGsmLib.Add("70", "p");
        hexGsmLib.Add("71", "q");
        hexGsmLib.Add("72", "r");
        hexGsmLib.Add("73", "s");
        hexGsmLib.Add("74", "t");
        hexGsmLib.Add("75", "u");
        hexGsmLib.Add("76", "v");
        hexGsmLib.Add("77", "w");
        hexGsmLib.Add("78", "x");
        hexGsmLib.Add("79", "y");
        hexGsmLib.Add("7A", "z");
        hexGsmLib.Add("7B", "ä");
        hexGsmLib.Add("7C", "ö");
        hexGsmLib.Add("7D", "ñ");
        hexGsmLib.Add("7E", "ü");
        hexGsmLib.Add("7F", "à");


        var hexParts = hexString.SplitInParts(2);



        string gsmString = "";

        foreach (string hexdigit in hexParts)
        {
           gsmString +=  hexGsmLib[hexdigit];
        }



        return gsmString;
    }

Заранее спасибо.

...