ヘッダー
Visual Basic サンプル集
VB.NET2002対応 VB.NET2003対応 VB2005対応 VB2008対応 VB2010対応 VB2012対応 VB2013対応 VB2015対応 VB2017対応 VB2019対応 Visual Studio 2022

Base64Urlをデコードする

2023/1/1

→ C# のサンプルに切り替える → Python のサンプルに切り替える

 

Base64UrlをUTF-8の文字列をデコードする

VB.NET2002対応 VB.NET2003対応 VB2005対応 VB2008対応 VB2010対応 VB2012対応 VB2013対応 VB2015対応 VB2017対応 VB2019対応 Visual Studio 2022

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

Debug.WriteLineが表示される場所

 

これでもできます。

VB2017対応 VB2019対応 Visual Studio 2022

Dim base64 As String = "5b6z5bed5a625bq3QUJD"
Dim value As String = System.Text.Encoding.UTF8.GetString(Microsoft.AspNetCore.WebUtilities.Base64UrlTextEncoder.Decode(base64))

Debug.WriteLine(value) '徳川家康ABC

Debug.WriteLineが表示される場所

メモ:ASP.NET以外で、この例を実行するには NuGet で Microsoft.AspNetCore.WebUtilities をインストールする必要があります。 → NuGetでパッケージをインストールする方法

 

 

Base64UrlをShift_JISの文字列にデコードする

VB.NET2002対応 VB.NET2003対応 VB2005対応 VB2008対応 VB2010対応 VB2012対応 VB2013対応 VB2015対応 VB2017対応 VB2019対応 Visual Studio 2022

#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

Debug.WriteLineが表示される場所

 

これでもできます。

VB2017対応 VB2019対応 Visual Studio 2022

#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

Debug.WriteLineが表示される場所

メモ:ASP.NET以外で、この例を実行するには NuGet で Microsoft.AspNetCore.WebUtilities をインストールする必要があります。 → NuGetでパッケージをインストールする方法

 

 

Base64Urlをオブジェクトにデコードする

オブジェクトの一例として、Base64Url を List(Of String) にデコードする例。

VB2019対応 Visual Studio 2022

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

Debug.WriteLineが表示される場所

メモ:List(Of String)に限らず、JsonSerializerで解析できるオブジェクトはこの例が通用します。

 

これでもできます。

VB2019対応 Visual Studio 2022

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

Debug.WriteLineが表示される場所

メモ:List(Of String) 限らず、JsonSerializerで解析できるオブジェクトはこの例が通用します。

メモ:ASP.NET以外で、この例を実行するには NuGet で Microsoft.AspNetCore.WebUtilities をインストールする必要があります。 → NuGetでパッケージをインストールする方法

 

 

Base64Urlをバイト型の配列にデコードする

VB2019対応 Visual Studio 2022

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

Debug.WriteLineが表示される場所

 

これでもできます。

VB2019対応 Visual Studio 2022

Dim base64 As String = "EjRWeJq83vA"
Dim bytes() As Byte = Microsoft.AspNetCore.WebUtilities.Base64UrlTextEncoder.Decode(base64)

'バイト型の配列を16進数表記の文字列で出力します。
Debug.WriteLine(Convert.ToHexString(bytes)) '123456789ABCDEF0

Debug.WriteLineが表示される場所

メモ:ASP.NET以外で、この例を実行するには NuGet で Microsoft.AspNetCore.WebUtilities をインストールする必要があります。 → NuGetでパッケージをインストールする方法