Ответы немного устарели. Для будущих искателей: лучший способ справиться с этим сейчас в C #:
byte[] b; // fill your byte array somehow
string s = System.Web.HttpServerUtility.UrlTokenEncode(b);
Возвращает строку в кодировке Base64, которая безопасна для URL (это то, о чем вы действительно говорили в комментариях к своему вопросу).
Затем вы можете декодировать его снова, как вы уже догадались:
byte[] b = System.Web.HttpServerUtility.UrlTokenDecode(s);