2013-03-04 98 views
1

我有一个应用程序将请求的IP地址作为varbinary(16)存储在数据库中,方法如下:Byte Array Size for a IPv6 IP Address将字节[]转换为字符串并返回

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

非常感谢!

回答

4
var ipString = (new IPAddress(myBytes)).ToString() 

然后在另一端

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

@Yuck:不,它不需要。尝试一下。它将为您提供人类可读的IP地址表示,这是在节点之间进行广告投放的最便捷的方式。 – spender 2013-03-04 17:54:55

1

对于一个稍微更人性化的字符串表示,你可以使用Base64

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

任意字节将**不符合任意编码。 -1 – spender 2013-03-04 17:53:03

+0

例如:'Encoding.ASCII.GetBytes(Encoding.ASCII.GetString(new byte [] {255,255,255,255}))''会返回一个数组{63,63,63,63}。比无用的更糟糕。 – spender 2013-03-04 18:01:18

+0

@sppender拍摄点。我删除了引用'Encoding'的答案部分。 – 2013-03-04 18:05:47

相关问题