• 締切済み

ASC関数

ASC関数についての質問なんですが、ASC関数は文字コードを返してくれますよね? それで、ちょっと疑問というか当たり前というか、わからないので質問します。 ASC(a)=97 ASC(あ)=-32096 ASC(0207050545)=48 ASC(2)=50 ASC(200207050545)=50 ASC(20020705)=50 という結果になるのでしょう?

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.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_100.htm

  • yotta
  • ベストアンサー率32% (26/79)
回答No.3

前の方の回答と同じですが,もう少し詳しくすると 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コードに変換します

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

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

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。maruru01です。 ASC関数は、 「指定した文字列内にある先頭の文字の文字コードを返す」(ヘルプより抜粋) 関数です。 従って、 ASC(2)=50 ASC(200207050545)=50 ASC(20020705)=50 は全て先頭の"2"の文字コードを返します。 何がわからないのでしょうか。 ちなみに ASC(a)とASC(あ)は、エラーになりますよ。 正しくは、 ASC("a")=97 ASC("あ")=-32096 ですね。

関連するQ&A