2013-03-04 76 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