漢字コードについて

解決


初心者  2005-10-20 18:05:26  No: 126528

初心者です。お世話になります。
漢字コードについて教えていただきたいのですが。
Dim A       As String
A = "あ"
Debug.Print Asc(A)                    '結果→ -32096
Debug.Print Chr(-32096)               '結果→  あ
Debug.Print Hex(Asc(Chr(-32096)))     '結果→ 82A0

'ここまでは納得ですが・・・・。

'82→ 10進数=130    'A0→ 10進数=160
'130 * 256 + 160 = 33440

'33440 と -32096 がわかりません。

ファイルからバイナリコードで1バイトづつ取得して
82 と A0 を取得できるところまではたどりついたので
すが82とA0から「あ」という文字にたどり着けません。
よろしくお願いします。


K.J.K.  2005-10-20 18:17:26  No: 126529

Debug.Print Hex$(CInt(33440 Or &HFFFF0000))


魔界の仮面弁士  2005-10-20 18:30:47  No: 126530

> 82とA0から「あ」という文字にたどり着けません。
『Debug.Print Chr(&H82A0)』、という話ではなく?

> '33440 と -32096 がわかりません。
『Debug.Print CLng("&H82A0"), CInt("&H82A0")』、だからでしょう。

Integer の範囲は、-32,768 〜 32,767 ですよね。これを言い換えると、
  0000 → 0
  0001 → 1
      :
  7FFE → 32,766
  7FFF → 32,767
  8000 → -32,768
  8001 → -32,767
      :
  FFFE → -2
  FFFF → -1
のように、&H8000 を境に、プラスとマイナスが入れ替わります。

一方、Long の範囲は、-2,147,483,648 〜 2,147,483,647。こちらは、
  00000000 → 0
  00000001 → 1
      :
  7FFFFFFE → 2,147,483,646
  7FFFFFFF → 2,147,483,647
  80000000 → -2,147,483,648
  80000001 → -2,147,483,647
      :
  FFFFFFFE → -2
  FFFFFFFF → -1
です。


初心者  2005-10-20 18:43:28  No: 126531

早速のご指導ありがとうございます。
Debug.Print Chr(33440 Or &HFFFF0000)  '結果→あ
となりました。本当にありがとうございます。
ただ、なぜ?という疑問は解決しておりません。
もう少し自分なりにも調べてみおますので、しばらく
「解決済み」まで猶予をください。


初心者  2005-10-20 18:54:27  No: 126532

K.J.K.さまのご指導でできるようになりました。
魔界の仮面弁士さまのご指導で理解することもできました。
お二人の超迅速かつ超ご親切なご指導を心から感謝いたします。
またここは、すばらしい掲示板だなあと感激もしております。
本当にありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加