【问题标题】:Convert byte[] to string and back again将 byte[] 转换为字符串并再次返回
【发布时间】:2013-02-18 21:43:56
【问题描述】:

我有一个应用程序将请求的 IP 地址作为 varbinary(16) 存储在数据库中,其方式如下所述:Byte Array Size for a IPv6 IP Address。

我需要将 IP 地址从一台服务器传递到另一台服务器。因此,我不能只依赖 Request 对象。我的问题是,如果我将 IP 地址作为字节 [],我如何将其编码为字符串,然后再次将其解码为字节 []?我总是对 ASCII、UTF8、Unicode 等编码感到困惑。

非常感谢!

【问题讨论】:

    标签: c# type-conversion


    【解决方案1】:
    var ipString = (new IPAddress(myBytes)).ToString()
    

    然后在另一端

    var addressBytes = IPAddress.Parse(ipString).GetAddressBytes();
    

    【讨论】:

    • @Yuck:不,它没有。试试吧。它将为您提供 IP 地址的人类可读表示,这是在节点之间传输它的最便携的方式。
    【解决方案2】:

    对于更用户友好的字符串表示,您可以使用Base64

    str = System.Convert.ToBase64String(bytes);
    bytes = System.Convert.FromBase64String(str);
    

    【讨论】:

    • 任意字节将不符合任意编码。 -1
    • 例如:Encoding.ASCII.GetBytes( Encoding.ASCII.GetString(new byte[]{255,255,255,255})) 将返回一个数组 {63,63,63,63}。比没用更糟糕。
    • @spender 点数。我删除了引用Encoding的答案部分。
    猜你喜欢
    • 2015-01-19
    • 2011-01-13
    • 1970-01-01
    • 2011-10-30
    • 1970-01-01
    • 2012-11-01
    • 2011-11-15
    • 1970-01-01
    • 2010-11-28
    相关资源
    最近更新 更多