広告

2014年7月27日日曜日

VBScriptでUTF-8等の文字コード変換を行うためのポイント

VBScriptやClassic ASPでUTF-8等のShift_JIS以外の文字コードを扱いたい場合があります。
ただVBScriptはShift_JISを前提として作られているため、それ以外の文字コードを扱うにはADODB.Streamオブジェクト等を使う必要がありますが、その際のつまづきやすいポイントを紹介します。


■UTF-8の文字コードをデコードする例


例えば、UTF-8の文字コードをデコードするには以下の様な処理が必要です。

Dim oUTF8
Set oUTF8 = CreateObject("ADODB.stream")
With oUTF8
    .Open
    .Type = 1 'adTypeBinary
    .Write(baUTF8)
    .Position = 0
    .Type = 2 'adTypeText
    .Charset = "UTF-8"
    strUTF8 = .ReadText()
    .Close
End With


ここでポイントになるのはStream.Writeメソッドです。




上記のとおり、Writeメソッドの引数としてバリアント型にbyte配列を格納して渡して上げる必要がありますが、そもそもVBScriptでは明示的にbyte配列を記述することはできません。

VBScriptでbyte配列を作り出す方法は以下を参考にして下さい。


2014年7月23日水曜日

VBScriptでbyte配列を扱う方法


ADODB.streamをVBScriptから呼び出す場合等、VBScript(あるいはClassic ASP)内でbyte配列を扱いたい場合があります。


例えば、上記記事で紹介しているのADOのWriteメソッドの場合、引数としてバリアント型にbyte配列を格納して渡して上げる必要がありますが、そもそもVBScriptでは明示的にbyte配列を記述することはできないため、工夫が必要になります。


■Microsoft.XMLDOMを使ってbyte配列を作る


方法はいくつかあると思いますが、一番手っ取り早いのはMicrosoft.XMLDOMを使う方法です。

Microsoft.XMLDOMのHex形式の文字列("1A0FB3"のような形式)をバイト配列に変換する機能を使って、例えば以下のように関数化します。

Function HexToBArray(Hex)
     With CreateObject("Microsoft.XMLDOM").createElement("aaaa")
         .DataType = "bin.hex"
         .Text = Hex
        
HexToBArray= .NodeTypedValue
     End With
End Function


あとは、この関数の戻り値をVBScriptのバリアント型の変数に格納しておけば、別の関数の引数として使うことが出来ます。

2014年7月21日月曜日

CPUってどんな仕組みで動いてるの?という人にオススメの2冊

プログラムはそこそこ書けるけど、そもそもコンピュータとかCPUってどういう仕組で動いてるの?という人は意外と多いと思います。

私もそうでしたが、CPUやコンピュータのハードウェアよりのアーキテクチャに関する書籍はかなりハードルが高いものが多いです。もう少し取っ付きやすい本はないかな?という人にオススメするのが以下の2冊です。

CPUの創りかた

CODE コードから見たコンピュータのからくり



■CPUの創り方:目次


1 はじめの一歩のその前に
2 LED
3 デジタル回路の基礎の基礎
4 リセットとクロック回路
5 ROMを作る
6 CPUの設計準備
7 1bitCPU(らしきもの)
8 ALUとプログラムカウンタ
9 命令デコーダ
10 全回路図
11 動作確認



■CODE:目次


親友
コードと組み合わせ
点字とバイナリコード
懐中電灯の解剖学
角を回って見る
電信とリレー
私たちの10個の数字
10に代わるもの
ちょびっとずつビットで
論理とスイッチ〔ほか〕


上記の目次からもわかりますが基本的には2冊は似た構成です。論理回路の説明から入り、究極的には論理回路の組み合わせによりCPUが出来上がるということがわかりやすく記述されてます。

またCPUが機械語をどのように解釈して動くのかということも腹に落ちると思います。

2冊の違いは、CPUの創り方は実際に簡易4bitCPUを作ってみようというテーマなのでハードウェアに重点を置いているのに対して、CODEはより論理的な説明に重点をおいている感じでしょうか。

 
 私自身、ハードウェアやCPUの仕組みを知りたいなと思いながらもなかなか取っ付き易い書籍が見つからなかったのですが、上記の2冊は取っ掛かりとしてオススメできます。