プロが教えるわが家の防犯対策術!

ASC関数についての質問なんですが、ASC関数は文字コードを返してくれますよね?
それで、ちょっと疑問というか当たり前というか、わからないので質問します。

ASC(a)=97
ASC(あ)=-32096
ASC(0207050545)=48

ASC(2)=50
ASC(200207050545)=50
ASC(20020705)=50

という結果になるのでしょう?

A 回答 (4件)

前出のご解答は、ASC("あ")について説明がそっけない。


前から疑問に思っていたが、計算すると下記の通りと
思う。この部分だけは先頭の1「文字」は漢字なので「2」バイト考えねばならない。
下記をして自分は納得した。
----
IMEツールバーを出す。例えばワードを開いて。
IMEパッドをクリック。
「あ」の文字を探して見つけたら、しばらくマウスを
ポイント。
シフトJISで「82A0」を読み取る。
「82A0」は2進数では1000、0010、1010,0000(、は本当は無いがわかりやすいように入れた)
先頭ビット(8の1000の左端が)1なのでマイナスと
解される。マイナスの数は全ビット反転させて1を加えるので、まず反転させる。
0111、1101、0101、1111としてこれに1を加え0111、1101、0110,0000となる。
これを10進に直すと「32096」となる。
エクセルを使って検算しました。
参考URL
http://village.infoweb.ne.jp/~fwie0048/tut/010_1 …
    • good
    • 0

前の方の回答と同じですが,もう少し詳しくすると



ASC("a")=97 ・・ a は 10進数で 97 16進数で 61h です
ASC("あ")=-32096 ・・ あ は 10進数で -32096(33440)
16進数で 82A0h(シフトJIS) です
ASC("0207050545")=48 ・・ 先頭の 0 は 10進数で 48 16進数で 30h です

ASC("2")=50 ・・ 2 は 10進数で 50 16進数で 32h です
ASC("200207050545")=50 ・・ 先頭の 2 は 10進数で 50 16進数で 32h です
ASC("20020705")=50 ・・ 先頭の 2 は 10進数で 50 16進数で 32h です

ASC関数は先頭の1文字のみをJISコードに変換します
また,全角文字はシフトJISコードに変換します
    • good
    • 0

>ASC(a)=97


>ASC(あ)=-32096
>ASC(0207050545)=48
>
>ASC(2)=50
>ASC(200207050545)=50
>ASC(20020705)=50

これではだめですね。
文字列はダブルクォートで囲ってください。
とくに、
ASC(0207050545)=48
は数値とみなされ先頭が2になるので50が返ります。
    • good
    • 0

こんにちは。

maruru01です。

ASC関数は、
「指定した文字列内にある先頭の文字の文字コードを返す」(ヘルプより抜粋)
関数です。
従って、
ASC(2)=50
ASC(200207050545)=50
ASC(20020705)=50
は全て先頭の"2"の文字コードを返します。
何がわからないのでしょうか。

ちなみに
ASC(a)とASC(あ)は、エラーになりますよ。
正しくは、
ASC("a")=97
ASC("あ")=-32096
ですね。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!