約 1,793,592 件
https://w.atwiki.jp/imops-forth/pages/33.html
文字列の比較 COMPARE オプションであるから定義されているとは限らないが、2つのaddr len文字列について、その内容が一致するかどうかを判定するforth標準ワードがCOMPARE である。 COMPARE ( c-addr1 u1 c-addr2 u2 -- code ) 比較は大文字小文字が区別される(case-sensitive)。 結果は、完全に等しいときには0を返す。文字列の長さが異なり、短い方の内容が長い方の一部として完全に含まれている場合、u1の方がu2より小さいとき-1、それ以外なら1を返す。短い方の文字列についても不一致がある場合には、最初の不一致文字について、c-addr1 u1で特定される文字列に含まれる文字の方が小さいとき-1、そうでないとき1を返す。 出力コードがやや複雑であるので分岐で書くと: 文字列内容が完全に一致 -- 0 文字列内容が一致しない一方が他方を、その先頭部分として含む場合。前の方が短い -- −1 前の方が長い -- 1 不一致文字があるとき最初の不一致文字について、先の文字列の文字の方が小さい -- −1 最初の不一致文字について、先の文字列の文字の方が大きい -- 1 である。要するに、完全に一致すれば0であり、そうでなければ1か−1、−1になるのは先の文字列の方が"小さい"とき、である。つまり、アルファベット順を前提にすると、辞書的順序で、前の文字列が早い位置なら-1、前の文字列が後の位置なら1、ということである。 CMPSTR COMPAREは、Mopsではデフォルトでは定義されていないが、string+というオプションファイルをロードすれば、CMPSTRというワードが定義され、上のCOMPAREの拡張になっている。CMPSTRの入力と出力コードはCOMPAREと同じであるが、大文字小文字の別を操作できる。すなわち、case?というVALUEをフラグとして、これにtrueを格納すれば、COMAREと同じく、大文字小文字を区別して比較する。case?がfalseなら大文字小文字を区別せず比較する。case?フラグはデフォルトではfalseである。 S= なお、Mopsではもっと簡易な文字列比較ワードとしてS=が定義されている。 S= ( c-addr1 u1 c-addr2 u2 -- b ) これは単純に、一致するときtrue、それ以外はfalseを返す。この比較は常に大文字小文字は区別される。 文字列の印字 TYPE 文字列を画面上に印字するワードがTYPEである。先に述べたように、スタック上では文字列はアドレスと長さの2つの数値で表現されるのが一般である。したがって、TYPEは、その2つを入力として取る。 TYPE ( addr len -- ) \ addr lenで特定された文字列を印字するのが効果 通常のforthの場合、印字はコマンド入力画面に行われる。Mopsではテキスト編集ビュー(コンソール)のキャレット位置から印字される。 ただし、PowerMopsまでは、TYPEはカレントポートに描画するという仕様であり、アプリケーションウィンドウに印字することもできたが、 iMopsでは、常にコンソールウィンドウのテキストビューに印字されるようになっており、それがないアプリケーションで実行はできない。iMopsで、 アプリケーションウィンドウに印字するには、TYPE以外の方法(CoreGraphicsシステムコールかTextViewのメソッド)を用いなければならない。 例えば、 greeting S" Hello world!" type ; のようなワードを定義して実行すれば、画面に、Hello world!と印字されるだろう。 CR SPACE SPACES 文字列の印字の途中に、CRを実行すれば、改行が挿入される。また、SPACEを実行すれば、半角空白が挿入される。SPACESは、スタックから入力を1つとって、その個数分の半角空白を挿入する。負の数の場合は何もしない。 CR ( -- ) \ 印字中に改行 SPACE ( -- ) \ 印字中に空白を挿入 SPACES ( u -- ) \ 印字中にu個の空白を挿入 ." ドット(ピリオド)と二重引用符のこのワード." は、初めから印字を目的とした文字列をリテラルとしてコンパイルする。使い方はS"と同じく、二重引用符 " を区切り文字として、そこまでを文字列として取る。これは、何かのワード定義内で用いられることを前提とするが、そのワードが実行されたとき文字列が印字されることになる。 ." コンパイル時 ( “ccc quote ” -- ) 実行時:( -- ) \ コンパイル時は文字列を取り、実行時はそれを印字。 quote は最後が"であることを示す。 例えば、 greeting ." Hello world!" ; とすれば、上のTYPEを用いた例と同値である。 .( ドットと左丸括弧からなるこのワード.( は、コンパイル時に文字列の印字を実行するものである。終わりの区切り文字は、右丸括弧) をとる。このワードは、コンパイル時に何かメッセージが必要な場合に使われるわけであるが、デバッグのような特別な状況でない限り、滅多に使わないように思われる。使用法としては、 Comp-mess .( Message in compiling) ; のようにすると、このワード定義を入力するとすぐに、Message in compilingと印字される。このワードComp-messの中身は空っぽである。 文字列のスタック上での形式 既に述べたように、ForthおよびMopsでの、文字列のスタック上での表現形式は、文字列格納メモリー域のはじめのアドレスと文字列の長さの二つからなる、addr(ess) len(gth)形式である。しかし、これ以外にも、いわゆるパスカル文字列あるいはカウンテド文字列という表現形式も用いられる。これは、メモリー域の最初の1バイトに文字列の長さを表す数値を格納し、その直後から文字列を連続的に格納する形式で、スタック上では、メモリー域の冒頭のアドレス値一つで表現される。 Forth表現の文字列をPascal形式に変換する必要は、通常のプログラムではでてこないが、逆はありうる。 COUNT 上のような場合に、Pascal形式の文字列について、addr len形式に変換するワードがCOUNTである。 COUNT ( addr1 --- addr2 len) \ スタック上のPascal文字列表現をForth文字列表現に変換する。 ASCII文字とその印字 CHAR [CHAR] 英文字のASCIIコードを数値として使いたい場合がある。Forth標準では、そのために2つのワードが定義されている。 1つは解釈実行環境用のCHARである。 CHAR ( “ spaces name” -- uc ) \ 空白以外の文字を取り、そのASCIIコードをスタックに残す。 CHARは、間の空白は全て無視する。その後に置くのは、形式上は文字列でかまわない。但し、その先頭の文字だけのコードが出力となる。 CHAR about \ -- 97 ( a のコード) もちろん、最初の1文字以外は無駄であるので、通常は一文字しか書かない。 CHARがワード定義内で用いられたときには、直後の文字を入力として受け取ること無く、ただワードCHARの呼び出しがそこにコンパイルされるにとどまる。それを含むワードが実行され、CHARが呼び出されたとき初めて、入力ストリームから文字を獲得しようとするのである。例えば、あまり意味はないが、 CHAR-POWER ( c -- n ) CHAR dup * ; CHAR-POWER a \ -- 97*97 = 9409 のようになる。 もう1つは、コンパイル環境用の[CHAR]である。 [CHAR] コンパイル時 ( “ spaces name” -- ) 実行時 ( -- uc ) \ コンパイル時に文字を取り、実行時にそのコードをスタックに置く 例えば、 Case-Test ( uc -- b ) [CHAR] a ; CHAR D Case-Test \ -- true CHAR d Case-Test \ -- false のようになる。つまり、具体的にいえば、[CHAR]は、Case-Testの定義内でaのコードを取って格納しておき、Case-Test実行時にはそれを取り出して入力と大小を比較するわけである。 Mopsでは、拡張として、解釈実行状態ではCHARとして動作し、コンパイル状態では[CHAR]として動作するワードとして が定義されている。 Case-Test ( uc -- b ) a ; D Case-Test \ -- true d Case-Test \ -- false UNICODE拡張 Forth標準ではオプションとして、文字コードを拡張したCHARおよび[CHAR]が規定されている。ユニコードを想定したものと思われる。しかし、これはオプションであるので、環境によっては対応していない場合もある。おそらく商用のforthとGforthは大丈夫ではないかと思われる。他方、Mopsでは、CHAR、[CHAR]や は、半角英数文字(ASCII文字)を想定しており、2バイト以上で表現される日本語文字には対応していない。しかし、日本語文字は1文字の文字列として扱うことで、ほとんど制限とはならない。 なお、ワードとは関係ないが、ユニコード拡張に関連し、古典的にCHARは1バイト(8ビット)長をも意味していたので、混同を避けるために、文字型であって必ずしも1バイトではない場合には、XCHARと表示することがある。 EMIT 一文字(ASCII)を印字するワードはEMITである。 EMIT ( uc -- ) \ 渡されたコードに該当する文字をスクリーンに印字 例えば、あまり意味はないが、 TYPE-A [CHAR] A EMIT ; TYPE-A とすれば、大文字のAが印字されるわけである。 BL なお、頻用される半角空白のASCII値は、BLという定数として定義されている。 BL ( -- $20 ) 次 数値の表記と印字
https://w.atwiki.jp/my-sql/pages/54.html
HOME 関数 文字列関数 ASCII ASCII ASCII(str) 文字列 str の左端の文字の ASCII コード値を返す。str が空の文字列のときは 0 を返す。str が NULL のときは NULL を返す。 mysql SELECT ASCII( 2 ); - 50 mysql SELECT ASCII(2); - 50 mysql SELECT ASCII( dx ); - 100
https://w.atwiki.jp/project_c3/pages/15.html
PSoC/PSoCの実験/USBUART用printfの作成 ASCIIZ ASCIIZは主にASCIIZ文字列という表現で用いられることがある。 ASCIIZ文字列 0x00(\0)を終端とするアスキーの文字列。 C言語の文字列配列などはASCIIZのデータ 例 const char str[] = "hello"; と確保した場合、配列サイズは6バイト(文字列helloの5バイト+\0終端コードの1バイト)となる。 @IT ASCIIZ文字列 (ASCIIZ string)
https://w.atwiki.jp/akitaicpc/pages/37.html
ASCII コード アスキー(ASCII American Standard Code for Information Interchange)は英語圏などでよくつかわれる 文字コードです。 ICPCの問題では、Input,Outputともにアルファベットか数字、記号しか出てきません(つまり日本語はない) そのため、文字列処理を行うときに文字コードの番号を知りたい時があるかもしれないのでのせておきます。 初めの32文字(10進数で0-31)と最後の127(DEL 削除)は、ASCIIでは制御文字となっていて 残りの33-126は印刷可能文字です(32は空白文字) 編集上の都合により、文字 (不等号)と | (パイプ文字)と ~ (チルダ)は全角で表示していますが、 本当は半角なので気を付けてください。 制御文字 10進数 16進数 文字(Ctrl + ) 略文字(内容) 00 00 @ NUL(空文字) 01 01 A SOH(ヘッディング開始) 02 02 B STX(テキスト開始) 03 03 C ETX(テキスト終了) 04 04 D EOT(転送完了) 05 05 E ENQ(照会) 06 06 F ACK(受信完了) 07 07 G BEL(警報) 08 08 H BS(後退) 09 09 I HT(水平タブ) 10 0A J LF(改行) 11 0B K VT(垂直タブ) 12 0C L FF(改頁) 13 0D M CR(復帰) 14 0E N SO(シフトアウト) 15 0F O SI(シフトイン) 16 10 P DLE(データリンク拡張) 17 11 Q DC1(装置制御1) 18 12 R DC2(装置制御2) 19 13 S DC3(装置制御3) 20 14 T DC4(装置制御4) 21 15 U NAK(受信失敗) 22 16 V SYN(同期) 23 17 W ETB(転送ブロック終了) 24 18 X CAN(取り消し) 25 19 Y EM(メディア終了) 26 1A Z SUB(置換) 27 20 [ ESC(エスケープ) 28 21 \ FS(ファイル区切り) 29 22 ] GS(グループ区切り) 30 23 ^ RS(レコード区切り) 31 1F _ US(ユニット区切り) 127 7F DEL(削除) 印字可能文字 10進数 16進数 文字 32 20 (半角スペース) 33 21 ! 34 22 " 35 23 # 36 24 $ 37 25 % 38 26 39 27 40 28 ( 41 29 ) 42 2A * 43 2B + 44 2C , 45 2D - 46 2E . 47 2F / 48 30 0 49 31 1 50 32 2 51 33 3 52 34 4 53 35 5 54 36 6 55 37 7 56 38 8 57 39 9 58 3A 59 3B ; 60 3C 61 3D = 62 3E > 63 3F ? 64 40 @ 65 41 A 66 42 B 67 43 C 68 44 D 69 45 E 70 46 F 71 47 G 72 48 H 73 49 I 74 4A J 75 4B K 76 4C L 77 4D M 78 4E N 79 4F O 80 50 P 81 51 Q 82 52 R 83 53 S 84 54 T 85 55 U 86 56 V 87 57 W 88 58 X 89 59 Y 90 5A Z 91 5B [ 92 5C \ 93 5D ] 94 5E ^ 95 5F _ 96 60 ` 97 61 a 98 62 b 99 63 c 100 64 d 101 65 e 102 66 f 103 67 g 104 68 h 105 69 i 106 6A j 107 6B k 108 6C l 109 6D m 110 6E n 111 6F o 112 70 p 113 71 q 114 72 r 115 73 s 116 74 t 117 75 u 118 76 v 119 77 w 120 78 x 121 79 y 122 7A z 123 7B { 124 7C |(パイプ) 125 7D } 126 7E ~(チルダ) 備考 大文字のASCII値に32を加えると小文字に変換することが出来る。例えば char str = A ; str += 32; とすることで大文字のAが小文字のaに変換される。 この32というのは、 a - A で得られます。 また、数字から48減らすと数値を得られる。例えば char str = 1 ; str -= 48; if(str==1) printf("strの値は%dです",str); とすることで、変数strの値は文字 1 ではなく数値の1に変換されている (実行すると "strの値は1です" と出力される) この48というのは、 0 で得られます。余談ですが、数字の文字コードの下位4ビットは2進化10進数になっています。なので、 4 15 で4という数値を得ることができます。 ...
https://w.atwiki.jp/mopsprogramming/pages/52.html
1バイト文字をASCIIコードで数値に変換するには、"CHAR"というプレフィックスを使います。例えば、 CHAR A とすれば、実行時には文字Aに当たるASCII値(64)がスタックに積まれます。これは、ワードやメソッドが引数としてcないしcharを必要とするときに便利です。 なお、Mopsでは"CHAR"の簡約形として、" "を使うことができます。つまり、 A とすれば上のコードと同値です。 ASCII文字は1バイトですから、その値を4つ並置すれば4バイトでちょうど1セル分になります(32ビットパソコンの場合)。Macintoshではこのように併置した4文字列をOSタイプとして頻繁に利用します。そこで、Mopsでは4文字列をASCII値の並置に変換するプレフィックスとして「 TYPE」が準備されています。例えば、 TYPE TEXT とすれば、実行時には、"TEXT"タイプに該当する値がスタックに積まれます。ツールボックス関数のパラメターとして使われることがあるでしょう。なお、" TYPE"の頭の点はゴミや汚れではなく、ティック(tick ASCII 39)と呼ばれる文字が先頭になければなりません。特に、全く異なる働きをするTYPEというワードも定義されているので、注意して下さい。 なお、iMopsでは TYPEはコンパイルモードでしか動作しません。ワード定義内で使用してください。 エンコードについて: 現在のところ、Mopsでは文字は1バイトのASCII文字であり、例えば、日本語の文字をユニコードエンコーディングで文字として扱うことはできないようです(少なくとも、私は、この機構が提供されているかどうか知りません。)。それをしたい場合、最も容易と思われるのは、OSが提供するエンコーディング転換ユーティリティを用いて、ワードセット、あるいはストリングクラスを書くことであると思われます。 関連項目: -[[データスタック]] 固定文字列 文字を呼び出す STATES トップページへ 目次へ
https://w.atwiki.jp/guulutiivi/pages/24.html
実は、使う文字は音声と対応していればなんでもいい。ただ単にASCII文字を使っていただけである。 guulutiiviはとても簡単な音声配列からなっているから、日本語のひらがな文字やカタカナ文字はうってつけの文字だ。 たとえば、rimoos nobiixiをリモースノビークィ などと表してよい。 guulutiiviはいちいち細かいことにこだわらない仕様なのだ。好きな文字を使っていい。
https://w.atwiki.jp/stgbuilder/pages/419.html
ASCIIコード (キーコードとは異なる) 特殊記号 記号と数字 英字(大) 英字(小) 0 NUL(null文字) 33 ! 65 A 97 a 1 SOH(ヘッダ開始) 34 " 66 B 98 b 2 STX(テキスト開始) 35 # 67 C 99 c 3 ETX(テキスト終了) 36 $ 68 D 100 d 4 EOT(転送終了) 37 % 69 E 101 e 5 ENQ(照会) 38 70 F 102 f 6 ACK(受信OK) 39 71 G 103 g 7 BEL(警告) 40 ( 72 H 104 h 8 BS(後退) 41 ) 73 I 105 i 9 HT(水平タブ) 42 * 74 J 106 j 10 LF(改行) 43 + 75 K 107 k 11 VT(垂直タブ) 44 , 76 L 108 l 12 FF(改頁) 45 - 77 M 109 m 13 CR(復帰) 46 . 78 N 110 n 14 SO(シフトアウト) 47 / 79 O 111 o 15 SI(シフトイン) 48 0 80 P 112 p 16 DLE(データリンクエスケープ) 49 1 81 Q 113 q 17 DC1(装置制御1) 50 2 82 R 114 r 18 DC2(装置制御2) 51 3 83 S 115 s 19 DC3(装置制御3) 52 4 84 T 116 t 20 DC4(装置制御4) 53 5 85 U 117 u 21 NAK(受信失敗) 54 6 86 V 118 v 22 SYN(同期) 55 7 87 W 119 w 23 ETB(転送ブロック終了) 56 8 88 X 120 x 24 CAN(とりけし) 57 9 89 Y 121 y 25 EM(メディア終了) 58 90 Z 122 z 26 SUB(置換) 59 ; 91 [ 123 { 27 ESC(エスケープ) 60 92 \ 124 | 28 FS(フォーム区切り) 61 = 93 ] 125 } 29 GS(グループ区切り) 62 94 ^ 126 ~ 30 RS(レコード区切り) 63 ? 95 _ 127 DEL(削除) 31 US(ユニット区切り) 64 @ 96 ` 32 (スペース) INIファイル,CONFIG.INI キー操作,キーボード対応表,キーコンフィグ機能,キーコード
https://w.atwiki.jp/stgbuilder/pages/391.html
<ASCII FORCE> http //www.nicovideo.jp/watch/sm5865571
https://w.atwiki.jp/sevenlives/pages/91.html
ASCII【アスキー】 読み:あすきー 英語:American Standard Code for Information Interchange 意味: 7ビットでアルファベットや数字、記号、特殊文字の128文字からなる最も基本的な文字コードのこと。 1963年にアメリカ規格協会(ANSI?)が定めた。 「ISO R 646」としても定義されている。 通信上の多くの文字コードはこのASCIIコードをベースに作られている。 US-ASCIIや7ビットコードとも言われている。 NVT-ASCII? ISO R 646 制御コード 2009年01月20日
https://w.atwiki.jp/stgbuilder/pages/392.html
<ASCII CROSS> http //www.nicovideo.jp/watch/sm10825222