Pytanie: czy istnieje lepszy sposób na zrobienie tego?przewodnik do base64, adres URL:
VB.Net
Function GuidToBase64(ByVal guid As Guid) As String
Return Convert.ToBase64String(guid.ToByteArray).Replace("/", "-").Replace("+", "_").Replace("=", "")
End Function
Function Base64ToGuid(ByVal base64 As String) As Guid
Dim guid As Guid
base64 = base64.Replace("-", "/").Replace("_", "+") & "=="
Try
guid = New Guid(Convert.FromBase64String(base64))
Catch ex As Exception
Throw New Exception("Bad Base64 conversion to GUID", ex)
End Try
Return guid
End Function
C#
public string GuidToBase64(Guid guid)
{
return Convert.ToBase64String(guid.ToByteArray()).Replace("/", "-").Replace("+", "_").Replace("=", "");
}
public Guid Base64ToGuid(string base64)
{
Guid guid = default(Guid);
base64 = base64.Replace("-", "/").Replace("_", "+") + "==";
try {
guid = new Guid(Convert.FromBase64String(base64));
}
catch (Exception ex) {
throw new Exception("Bad Base64 conversion to GUID", ex);
}
return guid;
}
Czy istnieje jakaś specjalna przyczyna usunięcia standardowych znaków specjalnych z kodowania Base64? – Hemant
Czy istnieje jakiś szczególny powód, dla którego należy go zakodować? Żaden z znaków w GUID nie wymaga kodowania adresów URL ani atrybutów. – blowdart
@Dziecko, ponieważ dla adresu URL, + i/i = nie działa dobrze w GET, @blowdart, aby adres URL był mniejszy – Fredou