在C#中将Hex解码为GSM 7位

时间:2019-01-27 16:23:58

标签: c# gsm at-command decoder ussd

我正在使用A6 Gsm模块的项目中。我可以向模块发送AT命令并获得响应。但是USSD选项有问题。

响应以十六进制形式出现。我想将此十六进制转换为GSM 7位。我搜索了google,但因绝望而失败。然后,我使用此网站转换表和c#制作一个非常独特的转换器。

GSM 7-bit Default Alphabet Table

但我认为这根本不正确。那我现在该怎么办?

我想用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;
    }

谢谢。

0 个答案:

没有答案