Visual Basic サンプル集 |
Visual Basic 中学校 > Visual Basic サンプル集 > Visual Basic サンプル集目次 >
Base64Urlをデコードする
2023/1/1
→ C# のサンプルに切り替える → Python のサンプルに切り替える
目次
Base64UrlをUTF-8の文字列をデコードする
Dim base64 As String = "5b6z5bed5a625bq3QUJD"
'まず通常のBase64に変換する
Dim padCount As Integer = {0, 1, 2, 1}(base64.Length Mod 4)
base64 = base64.Replace("-", "+").Replace("_", "/") & StrDup(padCount, "=")
'元の値に変換する
Dim value As String = System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(base64))
Debug.WriteLine(value) '徳川家康ABC
これでもできます。
Dim base64 As String = "5b6z5bed5a625bq3QUJD"
Dim value As String = System.Text.Encoding.UTF8.GetString(Microsoft.AspNetCore.WebUtilities.Base64UrlTextEncoder.Decode(base64))
Debug.WriteLine(value) '徳川家康ABC
メモ:ASP.NET以外で、この例を実行するには NuGet で Microsoft.AspNetCore.WebUtilities をインストールする必要があります。 → NuGetでパッケージをインストールする方法
Base64UrlをShift_JISの文字列にデコードする
#If NETCOREAPP Then
'.NET CoreでShift_JISなど追加のエンコーディングを扱うために必要です。
System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance)
#End If
Dim base64 As String = "k7-Q7InGjU5BQkM"
'まず通常のBase64に変換する
Dim padCount As Integer = {0, 1, 2, 1}(base64.Length Mod 4)
base64 = base64.Replace("-", "+").Replace("_", "/") & StrDup(padCount, "=")
'元の値に変換する
Dim value As String = System.Text.Encoding.GetEncoding("Shift_JIS").GetString(Convert.FromBase64String(base64))
Debug.WriteLine(value) '徳川家康ABC
これでもできます。
#if NETCOREAPP
'.NET CoreでShift_JISなど追加のエンコーディングを扱うために必要です。
System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance)
#endif
Dim base64 As String = "k7-Q7InGjU5BQkM"
Dim value As String = System.Text.Encoding.GetEncoding("Shift_JIS").GetString(Microsoft.AspNetCore.WebUtilities.Base64UrlTextEncoder.Decode(base64))
Debug.WriteLine(value) '徳川家康ABC
メモ:ASP.NET以外で、この例を実行するには NuGet で Microsoft.AspNetCore.WebUtilities をインストールする必要があります。 → NuGetでパッケージをインストールする方法
Base64Urlをオブジェクトにデコードする
オブジェクトの一例として、Base64Url を List(Of String) にデコードする例。
Dim base64 As String = "WyJBcHBsZSIsIlx1NUZCM1x1NURERFx1NUJCNlx1NUVCNyIsIjEyMzQ1Il0"
'まず通常のBase64に変換する
Dim padCount As Integer = {0, 1, 2, 1}(base64.Length Mod 4)
base64 = base64.Replace("-", "+").Replace("_", "/") & StrDup(padCount, "=")
'JSONにする
Dim json As String = System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(base64))
'values は "Apple", "徳川家康", "12345" を要素に持つリストになります。
Dim values As List(Of String) = System.Text.Json.JsonSerializer.Deserialize(Of List(Of String))(json)
'リストの要素を , で結合して1つも文字列として出力します。
Debug.WriteLine(String.Join(",", values)) 'Apple,徳川家康,12345
メモ:List(Of String)に限らず、JsonSerializerで解析できるオブジェクトはこの例が通用します。
これでもできます。
Dim base64 As String = "WyJBcHBsZSIsIlx1NUZCM1x1NURERFx1NUJCNlx1NUVCNyIsIjEyMzQ1Il0"
Dim json As String = System.Text.Encoding.UTF8.GetString(Microsoft.AspNetCore.WebUtilities.Base64UrlTextEncoder.Decode(base64))
'values は "Apple", "徳川家康", "12345" を要素に持つリストになります。
Dim values As List(Of String) = System.Text.Json.JsonSerializer.Deserialize(Of List(Of String))(json)
'リストの要素を , で結合して1つも文字列として出力します。
Debug.WriteLine(String.Join(",", values)) 'Apple,徳川家康,12345
メモ:List(Of String) 限らず、JsonSerializerで解析できるオブジェクトはこの例が通用します。
メモ:ASP.NET以外で、この例を実行するには NuGet で Microsoft.AspNetCore.WebUtilities をインストールする必要があります。 → NuGetでパッケージをインストールする方法
Base64Urlをバイト型の配列にデコードする
Dim base64 As String = "EjRWeJq83vA"
'まず通常のBase64に変換する
Dim padCount As Integer = {0, 1, 2, 1}(base64.Length Mod 4)
base64 = base64.Replace("-", "+").Replace("_", "/") & StrDup(padCount, "=")
'元の値に変換する
Dim bytes() As Byte = Convert.FromBase64String(base64)
'バイト型の配列を16進数表記の文字列で出力します。
Debug.WriteLine(Convert.ToHexString(bytes)) '123456789ABCDEF0
これでもできます。
Dim base64 As String = "EjRWeJq83vA"
Dim bytes() As Byte = Microsoft.AspNetCore.WebUtilities.Base64UrlTextEncoder.Decode(base64)
'バイト型の配列を16進数表記の文字列で出力します。
Debug.WriteLine(Convert.ToHexString(bytes)) '123456789ABCDEF0
メモ:ASP.NET以外で、この例を実行するには NuGet で Microsoft.AspNetCore.WebUtilities をインストールする必要があります。 → NuGetでパッケージをインストールする方法