N進数変換
2
16進数文字列を10進数に変換したい
2
16進数文字列を10進数に変換する場合は、16進数文字列をByteArray型に変換を行った上で
ByteArrayクラスのGetIntegerメソッド、GetIntegerAsStringメソッドを使用して10進数(10進数文字列)に変換を行います。
[ サンプルコード ]
Form form1 { Width = 387; Height = 347; EditBox EditBox1 { X = 17; Y = 38; Width = 352; Height = 194; } Button Button1 { X = 215; Y = 252; Width = 157; Height = 38; Title = "16進数→10進数に変換"; Function OnTouch( e ) { /* 16進数文字列をByteArrayに変換 */ var bin = ^.hexStrToByteArray("1A023345"); /* 10進数に変換。バイト単位で切り出して整数値として取得 */ var num = bin.GetInteger( 0, bin.Length, ByteArray.UNIT_BYTE + ByteArray.BIG_ENDIAN ); /* 10進数に変換。バイト単位で切り出して整数値文字列として取得 */ var num_str = bin.GetIntegerAsString( 0, bin.Length, ByteArray.UNIT_BYTE + ByteArray.BIG_ENDIAN ); ^.EditBox1.Value += "解析データ(16進数):" + bin.ToHexString() + "\n"; ^.EditBox1.Value += "整数値として取得(GetIntegerメソッド):" + str(num) + "\n"; ^.EditBox1.Value += "文字列として取得(GetIntegerAsStringメソッド):" + str(num_str) + "\n"; ^.EditBox1.Value += "*******************************************************\n"; /* 16進数文字列をByteArrayに変換 */ /* 桁数が多い値 */ var bin2 = ^.hexStrToByteArray("E2801191A5030062E3C20CF8"); /* 10進数に変換。バイト単位で切り出して整数値文字列として取得 ※Number(15桁精度)を超えてしまう場合などはString型で取得 */ var num_str2 = bin2.GetIntegerAsString( 0, bin2.Length, ByteArray.UNIT_BYTE + ByteArray.BIG_ENDIAN ); ^.EditBox1.Value += "解析データ(16進数):" + bin2.ToHexString() + "\n"; ^.EditBox1.Value += "文字列として取得(GetIntegerAsStringメソッド):" + str(num_str2); } } /* 16進数文字列をByteArrayに変換 */ Function hexStrToByteArray(hexStr) { /* 文字数が2の倍数ではない場合、バイト単位のデータとして揃っていないので解析不可 */ if(hexStr.length % 2 != 0) return null; /* 解析開始 */ var ret = new ByteArray; var highNibble = 0; var i; var ch; var nibble; var oneByte; for(i = 0; i < hexStr.length; ++i) { /* CharCodeAtメソッドで対象文字の文字コードに変換して、 その値から整数値に変換する */ ch = hexStr.CharCodeAt(i); if(ch >= 0x30 && ch <= 0x39) { /* "0" - "9" */ /* 文字コード 0x30 - 0x30 = 0、0x31 - 0x30 = 1・・・のように 文字コードから10進数整数に変換している */ nibble = ch - 0x30; } else if(ch >= 0x41 && ch <= 0x5A) { /* "A" - "F" */ nibble = ch - 0x41 + 10; } else if(ch >= 0x61 && ch <= 0x7A) { /* "a" - "f" */ nibble = ch - 0x61 + 10; } else { return null; } /* 16進数→10進数への変換 */ if(i % 2 == 0) { /* 上位桁の場合 : 記録して次へ */ highNibble = nibble; } else { /* 下位桁の場合で1バイト分が出来上がる */ oneByte = highNibble * 16 + nibble; /* 1バイト分のデータ(16進数の場合は0〜FF、10進数の場合は0〜255、 2進数の場合は0〜11111111)でByteArrayオブジェクトを作成 */ ret += new ByteArray(oneByte); } } /* 解析結果を戻す */ return ret; } }
管理番号:ConHt_002
Biz-Collections Bizの宝箱 トップへ
Biz/Browser HT・Biz/Browser SmartDevice・Biz/Browser AI TIPS集 トップへ