SQLの窓

2010年06月02日


VB.net : String、Char()、Byte() の相互変換

Byte はキャラクタセットとしての内部コードが必要な場合に使用します

ある値を(特定のキャラクタセットで) Char か 文字列で比較したい場合は Byte 配列の中に一つ数値をセットして、Encoding.GetChars か Encoding.GetString で変換して使用します
------------------------------------------------------
Dim ByteCr As Byte() = New Byte() { 13 }
Dim ByteLf As Byte() = New Byte() { 10 }
------------------------------------------------------
Imports System.Text

Module MyModule

' ********************************************************
' 相互変換
' ********************************************************
Sub Main()

	Dim base As String = "アイ"


	' **************************************************************
	' 文字列の "アイ" を Byte 配列に変換 : String => Byte()
	' ※ Byte 配列変換時は、キャラクタセットによって実体が変わります
	' **************************************************************

	Dim a_byte As Byte() = Encoding.GetEncoding("Shift_JIS").GetBytes(base)


	' SHIFT_JIS としてバイト変換しているので、B1 B2 となります
	Console.WriteLine( a_byte.Length )
	Console.WriteLine( a_byte(0).ToString("X") )
	Console.WriteLine( a_byte(1).ToString("X") )

	Console.WriteLine( "----------" )

	' 元に戻す

	Dim work As String = Encoding.GetEncoding("Shift_JIS").GetString( a_byte )

	Console.WriteLine( work )

	Console.WriteLine( "----------" )


	' **************************************************************
	' バイト配列(Shift_JIS) "アイ" を Char 配列(Unicode)に変換 : Byte() => Char()
	' ※ Byte 配列内のキャラクタセットに合わせて変換する必要があります
	' **************************************************************

	Dim a_char As Char() = Encoding.GetEncoding("Shift_JIS").GetChars( a_byte )

	Console.WriteLine( a_char )
	Console.WriteLine( a_char.Length )

	Dim b As Byte() = Encoding.Unicode.GetBytes(a_char)

	' Unicode として値を表示しています
	Console.WriteLine( b.Length )
	Console.WriteLine(b(0).ToString("X"))
	Console.WriteLine(b(1).ToString("X"))
	Console.WriteLine(b(2).ToString("X"))
	Console.WriteLine(b(3).ToString("X"))

	Console.WriteLine( "----------" )


	' **************************************************************
	' Char 配列(Unicode)を String に変換 : Char() => String
	' **************************************************************

	' Char 単位で変換して連結
	Console.WriteLine( a_char(0).ToString() & a_char(1).ToString() )

	' いったん Byte 配列に戻す(Unicode)
	a_byte = Encoding.Unicode.GetBytes(a_char)
	Console.WriteLine( Encoding.Unicode.GetString(a_byte) )

	' いったん Byte 配列に戻す(Shift_JIS)
	a_byte = Encoding.GetEncoding("Shift_JIS").GetBytes(a_char)
	Console.WriteLine( Encoding.GetEncoding("Shift_JIS").GetString(a_byte) )

	Console.WriteLine( "----------" )


	' **************************************************************
	' 文字列の "アイ" を Char 配列に変換 : String => Char()
	' **************************************************************

	a_char = base.ToCharArray()

	Console.WriteLine( a_char )
	Console.WriteLine( a_char.Length )

	b = Encoding.Unicode.GetBytes(a_char)

	' Unicode として値を表示しています
	Console.WriteLine( b.Length )
	Console.WriteLine(b(0).ToString("X"))
	Console.WriteLine(b(1).ToString("X"))
	Console.WriteLine(b(2).ToString("X"))
	Console.WriteLine(b(3).ToString("X"))

	Console.WriteLine( "----------" )

	' **************************************************************
	' Char 配列(Unicode)を Byte配列に変換 : Char() => Byte()
	' ※ Byte 配列変換時は、キャラクタセットによって実体が変わります
	' **************************************************************

	a_byte =  Encoding.Unicode.GetBytes(a_char)

	' Unicode として値を表示しています
	Console.WriteLine( a_byte.Length )
	Console.WriteLine(a_byte(0).ToString("X"))
	Console.WriteLine(a_byte(1).ToString("X"))
	Console.WriteLine(a_byte(2).ToString("X"))
	Console.WriteLine(a_byte(3).ToString("X"))

	Console.WriteLine( "----------" )


	' **************************************************************
	' バイト配列(Unicode) を String)に変換 : Byte() => String
	' ※ Byte 配列内のキャラクタセットに合わせて変換する必要があります
	' **************************************************************

	Console.WriteLine( Encoding.Unicode.GetString(a_byte) )

	Console.WriteLine( "----------" )


	' **************************************************************
	' 単一の文字列(String) を 単一の Char に変換 String => Char
	' **************************************************************

	Dim char1 As Char = Char.Parse("ア")
	Dim a_char2 As Char() = {char1,"イ"}

	Console.WriteLine( a_char2 )

End Sub

End Module


関連する記事

VB.net : 文字単位の ASCII と Unicode
VB.net と C# における KeyPress イベントの受け取り方
VB.net : テキストファイルとキャラクタセット


posted by lightbox at 2010-06-02 12:26 | VB.NET : ベーシック | このブログの読者になる | 更新情報をチェックする
バッチ処理

Microsoft Office
container 終わり

フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

Android SDK ポケットリファレンス
改訂版 Webデザイナーのための jQuery入門
今すぐ使えるかんたん ホームページ HTML&CSS入門
CSS ドロップシャドウの参考デモ
Google Hosted Libraries
cdnjs
BUTTONS (CSS でボタン)
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり