【问题标题】:c# Convert Hex to ASCII时间:2018-01-10 标签:c#convert Hex to ASCII
【发布时间】:2014-11-13 14:43:12
【问题描述】:

我需要将十六进制字符串(通过套接字从游戏服务器接收)转换为 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

【问题讨论】:

  • 您如何向我们展示您用来尝试转换它的代码?你期望输出是什么?

标签: c# string hex ascii


【解决方案1】:

您的示例字符串似乎首先有一个空字符,这将在您的字符串开始之前终止它。如果您从输入中删除“008300”前缀,它似乎可以正常工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-11
    • 1970-01-01
    • 1970-01-01
    • 2011-08-01
    相关资源
    最近更新 更多