c#将Hex转换为ASCII

时间:2014-09-19 04:47:06

标签: c# string hex ascii

我需要将十六进制字符串(通过套接字从游戏服务器接收)转换为ascii(或其他任何可用的格式)。

我遇到的问题是,每当我尝试显示已转换的字符串时,它都为空,但是,此网站:Click!在转换它时效果很好。

从服务器收到的示例十六进制:

008300DD0676657273696F6E3D25326674672532662B53746174696F6E2B3133266D6F64653D736563726574267265737061776E3D3026656E7465723D3126766F74653D302661693D3126686F7374266163746976655F706C61796572733D3026706C61796572733D3132267265766973696F6E3D64666639623862646165323234613332366364313166643566353431326638346463643565346237267265766973696F6E5F646174653D323031342D30382D32322661646D696E733D302667616D6573746174653D31266D61705F6E616D653D4D65746153746174696F6E00

我尝试了很多方法:这是我目前正在使用的方法:

        public static string Hex2Ascii(string hexString){
        StringBuilder sb = new StringBuilder();

        for (int i = 0; i < hexString.Length; i += 2)
        {
            string hs = hexString.Substring(i, 2);
            sb.Append(Convert.ToString(Convert.ToChar(Int32.Parse(hexString.Substring(i, 2), System.Globalization.NumberStyles.HexNumber))));
        }

        return sb.ToString();
    }

预期结果如下:

ƒÝversion=%2ftg%2f+Station+13&mode=secret&respawn=0&enter=1&vote=0&ai=1&host&active_players=0&players=12&revision=dff9b8bdae224a326cd11fd5f5412f84dcd5e4b7&revision_date=2014-08-22&admins=0&gamestate=1&map_name=MetaStation

1 个答案:

答案 0 :(得分:1)

你的示例字符串似乎首先有一个null-char,它会在你的字符串开始之前终止它。如果从输入中删除“008300” - 前缀,它似乎正在工作。