guid to base64, for URL

.net, base64, c#, guid, vb.net

Solution

I understand that the reason you are clipping == in the end is that because you can be certain that for GUID (of 16 bytes), encoded string will always end with ==. So 2 characters can be saved in every conversion.

Beside the point @Skurmedal already mentioned (should throw an exception in case of invalid string as input), I think the code you posted is just good enough.

Problem

Question: is there a better way to do that? 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; } ```

Original source