[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

84. stringproc


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

84.1 Introduction to String Processing

パッケージ stringprocはフォーマットやエンコードやデータストリームを含む文字列と文字を処理する関数を含みます。 例えば base64や hash関数といった暗号のためのいくつかのツールがこのパッケージを締めくくります。

これは load(stringproc)を介して直接ロードもできますし、関数の1つを使うと自動的にロードされます。

質問やバグレポートは、著者に連絡してください。 以下のコマンドは著者の eメールアドレスを印字します。

printf(true, "~{~a~}@gmail.com", split(sdowncase("Volker van Nek")))$

例えば "Text"とタイプすることで文字列が構成されます。 オプション変数 stringdispがデフォルトの falseに設定されている時、 ダブルクオートは印字されません。 stringpは オブジェクトが文字列かどうかのテストです。

 
(%i1) str: "Text";
(%o1)                         Text
(%i2) stringp(str);
(%o2)                         true

文字は、長さ1の文字列で表されます。 charpは対応するテストです。

 
(%i1) char: "e";
(%o1)                           e
(%i2) charp(char);
(%o2)                         true

Maximaでは文字列の位置インデックスはリストと同様 1から始まり、 以下の一貫性が成り立ちます。

 
(%i1) is(charat("Lisp",1) = charlist("Lisp")[1]);
(%o1)                         true

文字列は Maximaの式を含むかもしれません。 これらは parse_stringでパースできます。

 
(%i1) map(parse_string, ["42" ,"sqrt(2)", "%pi"]);
(%o1)                   [42, sqrt(2), %pi]
(%i2) map('float, %);
(%o2)        [42.0, 1.414213562373095, 3.141592653589793]

文字列は文字として処理したり、オクテットとしてバイナリ形式で処理できます。 変換の関数は string_to_octetsoctets_to_stringです。 使用できるエンコードはプラットフォームやアプリケーション、裏にあるLispに依存します。 (以下はSBCLでコンパイルされた GNU/Linux上の Maximaを見せます)

 
(%i1) obase: 16.$
(%i2) string_to_octets("$£€", "cp1252");
(%o2)                     [24, 0A3, 80]
(%i3) string_to_octets("$£€", "utf-8");
(%o3)               [24, 0C2, 0A3, 0E2, 82, 0AC]

文字列は文字ストリームに書かれたり、オクテットとしてバイナリストリームに書かれたりします。 以下の例は文字のファイル入出力を例示します。

openwはファイルへの出力ストリームを返します。 printfはそのファイルにフォーマットされたものを書き込みます。 例えば、closeで ストリームに含まれるすべての文字はファイルに書き込まれます。

 
(%i1) s: openw("file.txt");
(%o1)                #<output stream file.txt>
(%i2) printf(s, "~%~d ~f ~a ~a ~f ~e ~a~%",
42, 1.234, sqrt(2), %pi, 1.0e-2, 1.0e-2, 1.0b-2)$
(%i3) close(s)$

そして openrは以前使ったファイルから入力ストリームを返します。 readlineは文字列として読み込んだ行を返します。 文字列は、例えば splittokensでトークン化され、 最終的に parse_stringでパースできます。

 
(%i4) s: openr("file.txt");
(%o4)                 #<input stream file.txt>
(%i5) readline(s);
(%o5)          42 1.234 sqrt(2) %pi 0.01 1.0E-2 1.0b-2
(%i6) map(parse_string, split(%));
(%o6)       [42, 1.234, sqrt(2), %pi, 0.01, 0.01, 1.0b-2]
(%i7) close(s)$

Categories:  Strings · Share packages · Package stringproc


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

84.2 Input and Output

例: ファイルへのフォーマットされた印字。

 
(%i1) s: openw("file.txt");
(%o1)                      #<output stream file.txt>
(%i2) control:
"~2tAn atom: ~20t~a~%~2tand a list: ~20t~{~r ~}~%~2t\
and an integer: ~20t~d~%"$
(%i3) printf( s,control, 'true,[1,2,3],42 )$
(%o3)                                false
(%i4) close(s);
(%o4)                                true
(%i5) s: openr("file.txt");
(%o5)                      #<input stream file.txt>
(%i6) while stringp( tmp:readline(s) ) do print(tmp)$
  An atom:          true
  and a list:       one two three
  and an integer:   42
(%i7) close(s)$

関数: close (stream)

streamを閉じて、もし streamが開いていたら trueを返します。

関数: flength (stream)

streamはファイルからかファイルへの開いたストリームでなかればいけません。 その時 flengthはこのファイルの中に現在存在するバイト数を返します。

例: writebyteを参照してください。

関数: flush_output (stream)

streamをフラッシュします。 ここで streamはファイルへの出力ストリームでなければいけません。

例: writebyteを参照してください。

Categories:  File output · Package stringproc

関数: fposition  
    fposition (stream)  
    fposition (stream, pos)

もし posが使われてないなら、 streamの中の現在位置を返します。 もし posが使われているなら、 fpositionstreamの中の位置を設定します。 posは正の数でなければいけません。

データストリームの位置は文字列やリスト同様、1から始まります。 すなわち、 streamの最初の要素は位置 1にあります。

関数: freshline  
    freshline ()  
    freshline (stream)

もし位置が行の最初でないなら 標準出力ストリームに改行を書き込み、 trueを返します。 オプション引数 streamを使うと、そのストリームに改行を書き込みます。 freshline()が期待通りに動かない場合がいくつかあります。

newlineも参照してください。

Categories:  File output · Package stringproc

関数: get_output_stream_string (stream)

現在 streamに存在するすべての文字を含む文字列を返します。 streamはオープンな文字列出力ストリームでなければいけません。 戻り値の文字は streamから取り除かれます。

例: make_string_output_streamを参照してください。

Categories:  Package stringproc

関数: make_string_input_stream  
    make_string_input_stream (string)  
    make_string_input_stream (string, start)  
    make_string_input_stream (string, start, end)

stringの一部とファイルの終了を含む入力ストリームを返します。 オプション引数がない場合、ストリームは全体の文字列を含み、一番目の文字の前に位置されます。 startendはストリームに含まれた部分文字列を定義します。 一番目の文字は位置 1で得られます。

 
(%i1) istream : make_string_input_stream("text", 1, 4);
(%o1)              #<string-input stream from "text">
(%i2) (while (c : readchar(istream)) # false do sprint(c), newline())$
t e x
(%i3) close(istream)$

Categories:  Package stringproc

関数: make_string_output_stream ()

文字を受け付ける出力ストリームを返します。 このストリームに現在存在する文字は get_output_stream_stringを使って取り出すことができます。

 
(%i1) ostream : make_string_output_stream();
(%o1)               #<string-output stream 09622ea0>
(%i2) printf(ostream, "foo")$

(%i3) printf(ostream, "bar")$

(%i4) string : get_output_stream_string(ostream);
(%o4)                            foobar
(%i5) printf(ostream, "baz")$

(%i6) string : get_output_stream_string(ostream);
(%o6)                              baz
(%i7) close(ostream)$

Categories:  Package stringproc

関数: newline  
    newline ()  
    newline (stream)

標準出力ストリームに改行を書き込みます。 オプション引数 streamを使うと、そのストリームに改行を書き込みます。 newline()が期待通りに動かないいくつかの場合があります。

newline()の使用の例に関しては、 sprintを参照してください。

Categories:  File output · Package stringproc

関数: opena (file)

fileへの文字出力ストリームを返します。 もし存在しているファイルを開いたら、 openafileの終わりに要素を追加します。

バイナリ出力に関しては opena_binaryを参照してください。

Categories:  File output · Package stringproc

関数: openr (file)

fileへの文字入力ストリームを返します。 openrfileが存在すること仮定します。

バイナリ出力に関しては openr_binaryを参照してください。

Categories:  File input · Package stringproc

関数: openw (file)

fileへの文字出力ストリームを返します。 もし fileが存在しないなら、生成されます。 もし存在しているファイルを開いたら、 openwfileを破壊的に変更します。

バイナリ出力に関しては openw_binaryを参照してください。

Categories:  File output · Package stringproc

関数: printf  
    printf (dest, string)  
    printf (dest, string, expr_1, ..., expr_n)

制御文字列 stringの文字を出力し、ティルデがディレクティブを導入することを観察することで フォーマットされた出力を生成します。 ティルデの後の文字は、前置パラメータと修飾子が先立つこともありますが、どの種類のフォーマットが望まれているか指定します。 ほとんどのディレクティブは1つか複数の要素の引数 expr_1, ..., expr_nを使い、出力を生成します。

もし destがストリームか trueなら、 printffalseを返します。 そうでなければ、 printfは出力を含む文字列を返します。 デフォルトでは、ストリーム stdin, stdout, stderrが定義されています。 もしmaximaがサーバーとして走っているなら (これは もし maximaがグラフィカルユーザーインタフェースと通信しているなら通常のケースです)、 setup-clientold_stdoutold_stderrも定義します。

printfは Maximaの Common Lisp 関数 formatを提供します。 以下の例はこれら二つの関数の一般的な関係を具体的に示します。

 
(%i1) printf(true, "R~dD~d~%", 2, 2);
R2D2
(%o1)                                false
(%i2) :lisp (format t "R~dD~d~%" 2 2)
R2D2
NIL

以下の記述は printfの可能性の雑なスケッチに限定されます。

Lisp関数 formatは詳細は多くの参考書籍に記述されています。 例えば、 Guy L. Steeleによる無料のオンラインマニュアル "Common Lisp the Language"が役立つでしょう。 それの chapter 22.3.3を参照してください。

 
   ~%       改行
   ~&       行のフレッシュ
   ~t       タブ
   ~$       通貨記号
   ~d       10進整数
   ~b       2進整数
   ~o       8進整数
   ~x       16進整数
   ~br      b進整数
   ~r       整数を一字一字
   ~p       複数形
   ~f       浮動小数点
   ~e       科学的記数法
   ~g       大きさに応じて~fまたは~e
   ~h       多倍長浮動小数点
   ~a       Maxima関数文字列を使う
   ~s       ~aと同様, しかし"ダブルコーテーション"で囲まれた出力
   ~~       ~
   ~<       行揃え, ~> 終端
   ~(       大文字小文字変換, ~) 終端
   ~[       選択, ~] 終端
   ~{       繰り返し, ~} 終端

多倍長浮動小数点に関するディレクティブ ~hは Lisp標準ではないので、以下に具体的に示します。

ディレクティブ ~*はサポートされていないことに注意してください。

もし destがストリームか trueなら、 printffalseを返します。 そうでなければ、 printfは出力を含む文字列を返します。

 
(%i1) printf( false, "~a ~a ~4f ~a ~@r",
              "String",sym,bound,sqrt(12),144), bound = 1.234;
(%o1)                 String sym 1.23 2*sqrt(3) CXLIV
(%i2) printf( false,"~{~a ~}",["one",2,"THREE"] );
(%o2)                          one 2 THREE
(%i3) printf(true,"~{~{~9,1f ~}~%~}",mat ),
          mat = args(matrix([1.1,2,3.33],[4,5,6],[7,8.88,9]))$
      1.1       2.0       3.3
      4.0       5.0       6.0
      7.0       8.9       9.0
(%i4) control: "~:(~r~) bird~p ~[is~;are~] singing."$
(%i5) printf( false,control, n,n,if n=1 then 1 else 2 ), n=2;
(%o5)                    Two birds are singing.

ディレクティブ ~hは多倍長浮動小数点を扱うために導入されました。

 
~w,d,e,x,o,p@H
 w : width
 d : decimal digits behind floating point
 e : minimal exponent digits
 x : preferred exponent
 o : overflow character
 p : padding character
 @ : display sign for positive numbers
 
(%i1) fpprec : 1000$
(%i2) printf(true, "|~h|~%", 2.b0^-64)$
|0.0000000000000000000542101086242752217003726400434970855712890625|
(%i3) fpprec : 26$
(%i4) printf(true, "|~h|~%", sqrt(2))$
|1.4142135623730950488016887|
(%i5) fpprec : 24$
(%i6) printf(true, "|~h|~%", sqrt(2))$
|1.41421356237309504880169|
(%i7) printf(true, "|~28h|~%", sqrt(2))$
|   1.41421356237309504880169|
(%i8) printf(true, "|~28,,,,,'*h|~%", sqrt(2))$
|***1.41421356237309504880169|
(%i9) printf(true, "|~,18h|~%", sqrt(2))$
|1.414213562373095049|
(%i10) printf(true, "|~,,,-3h|~%", sqrt(2))$
|1414.21356237309504880169b-3|
(%i11) printf(true, "|~,,2,-3h|~%", sqrt(2))$
|1414.21356237309504880169b-03|
(%i12) printf(true, "|~20h|~%", sqrt(2))$
|1.41421356237309504880169|
(%i13) printf(true, "|~20,,,,'+h|~%", sqrt(2))$
|++++++++++++++++++++|

Categories:  File output · Package stringproc

関数: readbyte (stream)

streamの中の最初のバイトを削除し返します。 streamはバイナリ入力ストリームでなければいけません。 もしファイルの終端に来たら、readbytefalseを返します。

例: OpenSSLのAESで暗号化されたファイルから最初の16バイトを読みます。

 
(%i1) ibase: obase: 16.$

(%i2) in: openr_binary("msg.bin");
(%o2)                       #<input stream msg.bin>
(%i3) (L:[],  thru 16. do push(readbyte(in), L),  L:reverse(L));
(%o3) [53, 61, 6C, 74, 65, 64, 5F, 5F, 88, 56, 0DE, 8A, 74, 0FD, 0AD, 0F0]
(%i4) close(in);
(%o4)                                true
(%i5) map(ascii, rest(L,-8));
(%o5)                      [S, a, l, t, e, d, _, _]
(%i6) salt: octets_to_number(rest(L,8));
(%o6)                          8856de8a74fdadf0

Categories:  File input · Package stringproc

関数: readchar (stream)

streamの一番目の文字を取り出し、返します。 ファイルの終端になったら、 readcharfalseを返します。

例: make_string_input_streamを参照してください。

Categories:  File input · Package stringproc

関数: readline (stream)

streamの現在位置から行の終わりまでの文字を含む文字列か、 もしファイルの終わりが来たら falseを返します。

Categories:  File input · Package stringproc

関数: sprint (expr_1, …, expr_n)

引数を順に評価し、一番左から始まる「一行」に表示します。 式は数の右隣にスペース文字と共に印字され、行の長さを無視します。 改行には newline()が役に立つかもしれません。

例: sprintを使って連続的に印字。 newline()で改行を生成。

 
(%i1) for n:0 thru 19 do sprint(fib(n))$
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181
(%i2) for n:0 thru 22 do (
         sprint(fib(n)),
         if mod(n,10) = 9 then newline() )$
0 1 1 2 3 5 8 13 21 34
55 89 144 233 377 610 987 1597 2584 4181
6765 10946 17711

Categories:  Package stringproc

関数: writebyte (byte, stream)

streambyteを書き出します。 streamはバイナリ出力ストリームでなければいけません。 writebytebyteを返します。

例: バイナリファイル出力ストリームに数バイト書き出します。 この例では、バイトすべては印字可能文字に対応していて printfileで印字されます。 バイトは flush_outpucloseが呼ばれるまでストリームに残ります。

 
(%i1) ibase: obase: 16.$

(%i2) bytes: map(cint, charlist("GNU/Linux"));
(%o2)                [47, 4E, 55, 2F, 4C, 69, 6E, 75, 78]
(%i3) out: openw_binary("test.bin");
(%o3)                      #<output stream test.bin>
(%i4) for i thru 3 do writebyte(bytes[i], out);
(%o4)                                done
(%i5) printfile("test.bin")$

(%i6) flength(out);
(%o6)                                  0
(%i7) flush_output(out);
(%o7)                                true
(%i8) flength(out);
(%o8)                                  3
(%i9) printfile("test.bin")$
GNU
(%i0A) for b in rest(bytes,3) do writebyte(b, out);
(%o0A)                               done
(%i0B) close(out);
(%o0B)                               true
(%i0C) printfile("test.bin")$
GNU/Linux

Categories:  File output · Package stringproc


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

84.3 Characters

文字は長さ 1の文字列です。

関数: adjust_external_format ()

Lispリーダーの現在の外部フォーマットに関する情報を印字し、 外部フォーマットのエンコーディングが Maximaを走らせているアプリケーションのエンコーディングと違う場合、 adjust_external_formatはエンコーディングの調整を試みて、 ヘルプか指示を印字します。 adjust_external_formatは、 外部フォーマットが変更された時 trueを、 そうでなければ falseを返します。

cint, unicode, octets_to_string, string_to_octets のような関数は、 Unicode文字フルレンジで適切に動くために、 Lispリーダーの外部フォーマットとして UTF-8を必要とします。

例(2016年3月 Windows上の Maxima): デフォルトの外部フォーマットがアプリケーションが提供するエンコーディングと等しくない時に adjust_external_formatを使用

1. コマンドライン Maxima

端末セッションが好まれる場合、 SBCLでコンパイルされた Maximaを使うことをお勧めします。 そうすれば Unicodeがデフォルトでサポートされ、 adjust_external_formatを呼び出す必要がありません。

もし MaximaがCLISPか GCLでコンパイルされたなら、 端末エンコーディングを CP850から CP1252に変更することをお勧めします。 adjust_external_formatがヘルプを印字します。

CCLは UTF-8を読み込む一方、端末入力はデフォルトで CP850です。 CCLは CP1252をサポートしません。 adjust_external_formatは 端末エンコーディングと外部フォーマット両方を iso-8859-1に変更するための指示を印字します。

2. wxMaxima

wxMaximaでは SBCLはデフォルトで CP1252を読み込みますが、 アプリケーションからの入力は UTF-8エンコードです。 調整が必要です。

一度、adjust_external_formatを呼び出し、 Maximaを再起動すると、 デフォルト外部フォーマットは UTF-0になります。

 
(%i1)adjust_external_format();
The line
(setf sb-impl::*default-external-format* :utf-8)
has been appended to the init file
C:/Users/Username/.sbclrc
Please restart Maxima to set the external format to UTF-8.
(%i1) false

Maximaを再起動。

 
(%i1) adjust_external_format();
The external format is currently UTF-8
and has not been changed.
(%i1) false

Categories:  Package stringproc

関数: alphacharp (char)

もし charがアルファベット文字なら trueを返します。

非 US-ASCII文字をアルファベット文字か確認するには、 背後のLispが完全なUnicodeサポートを提供しなければいけません。 例えば、ドイツ語のウムラウトは GNU/Linux上の SBCLではアルファベット文字として検出されますが、 GCLではそうなりません。 (Windows Maximaでは、SBCLでコンパイルされた時、 UTF-8を設定しなければいけません。 詳しくは adjust_external_formatを参照してください)

例: 非 US-ASCII文字のテスト

背後のLisp (SBCL, GNU/Linux)は タイプされた文字をLisp文字に変換してテストすることができます。

 
(%i1) alphacharp("ü");
(%o1)                          true

GCLではこれはできまsねん。 エラーが起こります。

 
(%i1) alphacharp("u");
(%o1)                          true
(%i2) alphacharp("ü");

package stringproc: ü cannot be converted into a Lisp character.
 -- an error.

関数: alphanumericp (char)

もし charがアルファベット文字か数字なら trueを返します。 (対応する US-ASCII文字だけが数字とみなされます)

注意: alphacharpの注記を参照してください。

関数: ascii (int)

128未満の整数 intに対応するUS-ASCII文字を返します。

127より大きな符号位置を変換するには unicodeを参照してください。

例:

 
(%i1) for n from 0 thru 127 do (
        ch: ascii(n),
        if alphacharp(ch) then sprint(ch),
        if n = 96 then newline() )$
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
a b c d e f g h i j k l m n o p q r s t u v w x y z

Categories:  Package stringproc

関数: cequal (char_1, char_2)

もし char_1char_2が同じ文字なら trueを返します。

関数: cequalignore (char_1, char_2)

cequalと同様ですが、文字の大小を無視します。 背後のLispが文字をアルファベット文字として認識できる時 非 US-ASCII文字で可能なだけです。 alphacharpの注記を参照してください。

関数: cgreaterp (char_1, char_2)

もし char_1の符号位置が char_2のそれより大きいなら trueを返します。

関数: cgreaterpignore (char_1, char_2)

cgreaterpと同様ですが、文字の大小を無視します。 背後のLispが文字をアルファベット文字として認識できる時 非 US-ASCII文字で可能なだけです。 alphacharpの注記を参照してください。

関数: charp (obj)

もし objが Maxima-文字なら trueを返します。 例えばイントロダクションを参照してください。

関数: cint (char)

Maxima文字 charのUnicode符号位置を返します。 charは長さ 1でなければいけません。

例: いくつかの文字の16進符号位置。 (GNU/Linux上の SBCLを使った Maxima)

 
(%i1) obase: 16.$
(%i2) map(cint, ["$","£","€"]);
(%o2)                           [24, 0A3, 20AC]

警告: 外部フォーマットが UTF-8に設定されている時、 Windows上の SBCLを使った wxMaximaでは 16ビットより大きな符号位置に対応した文字を入力できません。 adjust_external_formatを参照してください。

CMUCLはこれらの文字を 1文字として処理しません。 そして cintfalseを返します。 回避策として文字をUTF-8オクテットを介して符号位置に変換すればいいかもしれません:

utf8_to_unicode(string_to_octets(character));

utf8_to_unicode, string_to_octetsを参照してください。

Categories:  Package stringproc

関数: clessp (char_1, char_2)

もし char_1の符号位置が char_2のそれより小さいなら trueを返します。

関数: clesspignore (char_1, char_2)

clesspと同様ですが、文字の大小を無視します。 背後のLispが文字をアルファベット文字として認識できる時 非 US-ASCII文字で可能なだけです。 alphacharpの注記を参照してください。

関数: constituent (char)

もし charが、グラフィック文字ですがスペース文字でないなら、 trueを返します。 グラフィック文字は見ることができる文字とスペース文字です。 (constituentは Paul Grahamによって定義されています。 Paul Graham, ANSI Common Lisp, 1996, page 67を参照してください)

 
(%i1) for n from 0 thru 255 do (
tmp: ascii(n), if constituent(tmp) then sprint(tmp) )$
! " #  %  ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B
C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c
d e f g h i j k l m n o p q r s t u v w x y z { | } ~

関数: digitcharp (char)

対応する US-ASCII文字が数字とみなされるような場合だけ もし charが数字なら trueを返します。

関数: lowercasep (char)

もし charが小文字なら trueを返します。

注意: alphacharpの注記を参照してください。

変数: newline

改行文字(ASCII文字 10)。

変数: space

スペース文字。

変数: tab

タブ文字。

関数: unicode (arg)

argが定義する文字を返します。 もし背後の LispがUnicodeのフルサポートを提供するなら argは Unicode符号位置か名前文字列です。

例: 16進符号位置で定義された文字 (GNU/Linux上の SBCLを使った Maxima)

 
(%i1) ibase: 16.$
(%i2) map(unicode, [24, 0A3, 20AC]);
(%o2)                            [$, £, €]

警告: 外部フォーマットが UTF-8に設定されている時、 Windows上の SBCLを使った wxMaximaでは 16ビットより大きな符号位置に対応した文字を入力できません。 adjust_external_formatを参照してください。

CMUCLはこれらの文字を 1文字として処理しません。 そして cintfalseを返します。 回避策として文字をUTF-8オクテットを介して符号位置に変換すればいいかもしれません:

octets_to_string(unicode_to_utf8(code_point));

octets_to_string, unicode_to_utf8を参照してください。

背後の Lispが Unicodeのフルサポートを提供するなら 文字は、名前で指定できるかもしれません。 以下は、ECL, CLISP, SBCLで可能です。 ここで Windows上のSBCLでは外部フォーマットはUTF-8に設定しなければいけません。 CMUCLも unicode(name)をサポートしますが、また 16ビット文字に限定されます。

unicodeの文字列引数は基本的に "~@c"して石を使った printfが返すのと同じ文字列を返します。 しかし以下で見るように、接頭辞 "#\"は省略しなければいけません。 下線はスペースに置き換えられ、大文字は小文字に置き換えられます。

例 (続き): 名前で定義された文字 (GNU/Linux上の SBCLを使った Maxima)

 
(%i3) printf(false, "~@c", unicode(0DF));
(%o3)                    #\LATIN_SMALL_LETTER_SHARP_S
(%i4) unicode("LATIN_SMALL_LETTER_SHARP_S");
(%o4)                                  ß
(%i5) unicode("Latin small letter sharp s");
(%o5)                                  ß

Categories:  Package stringproc

関数: unicode_to_utf8 (code_point)

Unicode code_pointに対応する UTF-8コードを含むリストを返します。

例: Unicode符号位置をUTF-8に、そしてその逆の変換。

 
(%i1) ibase: obase: 16.$
(%i2) map(cint, ["$","£","€"]);
(%o2)                           [24, 0A3, 20AC]
(%i3) map(unicode_to_utf8, %);
(%o3)                 [[24], [0C2, 0A3], [0E2, 82, 0AC]]
(%i4) map(utf8_to_unicode, %);
(%o4)                           [24, 0A3, 20AC]

Categories:  Package stringproc

関数: uppercasep (char)

もし charが大文字なら trueを返します。

注意: alphacharpに関する注記を参照してください。

変数: us_ascii_only

このオプション変数は Maximaを走らせるアプリケーションが提供する文字エンコーディングが UTF-8なのに Lispリーダの外部フォーマットが UTF-8に等しくない時 Maximaに影響します。

GNU/Linux上では Maximaが GCLでビルドされた時にはこれは trueです。 Windows上でGCLか SBCLでビルドされた場合もそうです。

SBCLを使う場合、外部フォーマットを UTF-8に変更することをお薦めします。 その場合、 us_ascii_onlyは設定不要です。 詳細は adjust_external_formatを参照してください。

us_ascii_onlyはデフォルトで falseです。 その時、 Maxima自身が (すなわち上記の状況で) UTF-8エンコーディングをパースします。

us_ascii_onlytrueに設定されている時、 文字列処理関数の引数に使われるすべての文字列は非US-ASCII文字を含まないと仮定されます。 その約束の下、Maximaは UTF-8をパースすることを避けて、文字列をより効率よく処理できます。

関数: utf8_to_unicode (list)

1文字のUTF-8エンコーディングを含む listに対応する Unicode符号位置を返します。

例: unicode_to_utf8を参照してください。

Categories:  Package stringproc


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

84.4 String Processing

文字列の位置インデックスは Maximaのリストと同様に 1から始まります。 charatの例を参照してください。

関数: charat (string, n)

stringn番目の文字を返します。 stringの一番目の文字は n = 1で返されます。

 
(%i1) charat("Lisp",1);
(%o1)                           L
(%i2) charlist("Lisp")[1];
(%o2)                           L

Categories:  Package stringproc

関数: charlist (string)

stringの文字すべてのリストを返します。

 
(%i1) charlist("Lisp");
(%o1)                     [L, i, s, p]

Categories:  Package stringproc

関数: eval_string (str)

文字列 strを Maxima式としてパースし、評価します。 文字列 strは終端子(ドル記号 $またはセミコロン ;) を持つかもしれませんし持たないかもしれません。

もし複数あるなら、最初の式だけがパースされ、評価されます。

もし strが文字列でないならエラーが出力されます。

例:

 
(%i1) eval_string ("foo: 42; bar: foo^2 + baz");
(%o1)                       42
(%i2) eval_string ("(foo: 42, bar: foo^2 + baz)");
(%o2)                   baz + 1764

parse_stringも参照してください。

Categories:  Package stringproc

関数: parse_string (str)

文字列 strを Maxima式としてパースします(評価しません)。 文字列 strは終端子(ドル記号 $またはセミコロン ;) を持つかもしれませんし持たないかもしれません。

もし複数あるなら、最初の式だけがパースされ、評価されます。

もし strが文字列でないならエラーが出力されます。

例:

 
(%i1) parse_string ("foo: 42; bar: foo^2 + baz");
(%o1)                    foo : 42
(%i2) parse_string ("(foo: 42, bar: foo^2 + baz)");
                                   2
(%o2)          (foo : 42, bar : foo  + baz)

eval_stringも参照してください。

Categories:  Package stringproc

関数: scopy (string)

stringのコピーを新しい文字列として返します。

Categories:  Package stringproc

関数: sdowncase  
    sdowncase (string)  
    sdowncase (string, start)  
    sdowncase (string, start, end)

supcaseと同様ですが、大文字を小文字に変換します。

Categories:  Package stringproc

関数: sequal (string_1, string_2)

もし string_1string_2が同じ文字の列を含むなら、 trueを返します。

関数: sequalignore (string_1, string_2)

sequalと同様ですが、文字の大小を無視します。 背後のLispが文字をアルファベット文字として認識できる時 非 US-ASCII文字で可能なだけです。 alphacharpの注記を参照してください。

関数: sexplode (string)

sexplodeは関数charlistの別名です。

Categories:  Package stringproc

関数: simplode  
    simplode (list)  
    simplode (list, delim)

simplodeは式のリストを取り、それらを結合して文字列にします。 もしデリミタ delimを指定しないなら、 simplodeはデリミタを使いません。 delimは任意の文字列を取り得ます。

例:

 
(%i1) simplode(["xx[",3,"]:",expand((x+y)^3)]);
(%o1)             xx[3]:y^3+3*x*y^2+3*x^2*y+x^3
(%i2) simplode( sexplode("stars")," * " );
(%o2)                   s * t * a * r * s
(%i3) simplode( ["One","more","coffee."]," " );
(%o3)                   One more coffee.

Categories:  Package stringproc

関数: sinsert (seq, string, pos)

substring (string, 1, pos - 1)と 文字列 seqsubstring (string, pos)の結合となる文字列を返します。 stringの一番目の文字は位置 1にあることに注意してください。

例:

 
(%i1) s: "A submarine."$
(%i2) concat( substring(s,1,3),"yellow ",substring(s,3) );
(%o2)                  A yellow submarine.
(%i3) sinsert("hollow ",s,3);
(%o3)                  A hollow submarine.

Categories:  Package stringproc

関数: sinvertcase  
    sinvertcase (string)  
    sinvertcase (string, start)  
    sinvertcase (string, start, end)

位置 startから endまでのそれぞれの文字を逆順にすることを除いて stringを返します。 もし endを与えないなら、 startから stringの終わりまでのすべての文字列を置き換えます。

例:

 
(%i1) sinvertcase("sInvertCase");
(%o1)                      SiNVERTcASE

Categories:  Package stringproc

関数: slength (string)

stringの中の文字の数を返します。

Categories:  Package stringproc

関数: smake (num, char)

num個の文字 charを持つ新しい文字列を返します。

例:

 
(%i1) smake(3,"w");
(%o1)                          www

Categories:  Package stringproc

関数: smismatch  
    smismatch (string_1, string_2)  
    smismatch (string_1, string_2, test)

string_1string_2が異なる string_1の最初の文字の位置、または falseを返します。 マッチングのデフォルトのテスト関数は sequalです。 もし smismatchが文字の大小を無視なければいけないなら、 テストとして sequalignoreを使ってください。

例:

 
(%i1) smismatch("seven","seventh");
(%o1)                           6

Categories:  Package stringproc

関数: split  
    split (string)  
    split (string, delim)  
    split (string, delim, multiple)

stringのすべてのトークンのリストを返します。 それぞれのトークンはパースされていない文字列です。 splitdelimをデリミタとして使います。 もし delimが与えられないなら、 スペース文字がデフォルトのデリミタです。 multipleはデフォルトで trueのブーリアン変数です。 重複デリミタが 1つとして読まれます。 これは、もしタブが複数スペース文字として保存されているなら、役立ちます。 もしmultiplefalseに設定されるなら、 それぞれのデリミタが有効です。

例:

 
(%i1) split("1.2   2.3   3.4   4.5");
(%o1)                 [1.2, 2.3, 3.4, 4.5]
(%i2) split("first;;third;fourth",";",false);
(%o2)               [first, , third, fourth]

Categories:  Package stringproc

関数: sposition (char, string)

stringの中で charとマッチする最初の文字の位置を返します。 stringの一番目の文字は位置 1にあります。 文字の大小を無視した文字のマッチに関しては, ssearchを参照してください。

Categories:  Package stringproc

関数: sremove  
    sremove (seq, string)  
    sremove (seq, string, test)  
    sremove (seq, string, test, start)  
    sremove (seq, string, test, start, end)

string同様文字列を返しますが、 seqとマッチする部分文字列すべてなしに返します。 マッチのデフォルトのテスト関数は sequalです。 もし sremoveseqを検索する間文字の大小を無視しなければいけないなら、 テストとして sequalignoreを使ってください。 探索を限定するには startendを使ってください。 stringの一番目の文字は位置 1にあることに注意してください。

例:

 
(%i1) sremove("n't","I don't like coffee.");
(%o1)                   I do like coffee.
(%i2) sremove ("DO ",%,'sequalignore);
(%o2)                    I like coffee.

Categories:  Package stringproc

関数: sremovefirst  
    sremovefirst (seq, string)  
    sremovefirst (seq, string, test)  
    sremovefirst (seq, string, test, start)  
    sremovefirst (seq, string, test, start, end)

seqとマッチする最初の文字列だけが削除されることを除いて、 sremove同様です。

Categories:  Package stringproc

関数: sreverse (string)

stringの文字すべてが逆順の文字列を返します。

Categories:  Package stringproc

関数: ssearch  
    ssearch (seq, string)  
    ssearch (seq, string, test)  
    ssearch (seq, string, test, start)  
    ssearch (seq, string, test, start, end)

文字列seqとマッチする stringの最初の部分文字列の位置を返します。 マッチのためのデフォルトのテスト関数は sequalです。 もし ssearchが文字の大小を無視しなければいけないなら、 テストとして sequalignoreを使ってください。 検索を限定するには startendを使ってください。 stringの一番目の文字は位置 1にあることに注意してください。

例:

 
(%i1) ssearch("~s","~{~S ~}~%",'sequalignore);
(%o1)                                  4

Categories:  Package stringproc

関数: ssort  
    ssort (string)  
    ssort (string, test)

test (c, d)false、かつ、 test (d, c)trueであるような 2つの連続する文字 cdがないような順で stringの文字すべてを含む文字列を返します。

ソートのためのデフォルトのテスト関数は clesspです。 テスト関数一式は {clessp, clesspignore, cgreaterp, cgreaterpignore, cequal, cequalignore}です。

例:

 
(%i1) ssort("I don't like Mondays.");
(%o1)                    '.IMaddeiklnnoosty
(%i2) ssort("I don't like Mondays.",'cgreaterpignore);
(%o2)                 ytsoonnMlkIiedda.'

Categories:  Package stringproc

関数: ssubst  
    ssubst (new, old, string)  
    ssubst (new, old, string, test)  
    ssubst (new, old, string, test, start)  
    ssubst (new, old, string, test, start, end)

stringの中の oldにマッチするすべての部分文字列を newで置き換えた文字列を返します。 oldnewは同じ長さである必要はありません。 マッチのためのデフォルトのテスト関数は sequalです。 もし ssubstが oldを検索する間大文字小文字を無視すべきなら、 テストとして sequalignoreを使ってください。 検索を制限するには startendを使ってください。 stringの一番目の文字は位置 1にあることに注意してください。

例:

 
(%i1) ssubst("like","hate","I hate Thai food. I hate green tea.");
(%o1)          I like Thai food. I like green tea.
(%i2) ssubst("Indian","thai",%,'sequalignore,8,12);
(%o2)         I like Indian food. I like green tea.

Categories:  Package stringproc

関数: ssubstfirst  
    ssubstfirst (new, old, string)  
    ssubstfirst (new, old, string, test)  
    ssubstfirst (new, old, string, test, start)  
    ssubstfirst (new, old, string, test, start, end)

oldとマッチする最初の部分文字列だけを置き換えることを除いて、 substと同様です。

Categories:  Package stringproc

関数: strim (seq,string)

stringの両端から seqに現れるすべての文字を除いた文字列を返します。

例:

 
(%i1) "/* comment */"$
(%i2) strim(" /*",%);
(%o2)                        comment
(%i3) slength(%);
(%o3)                           7

Categories:  Package stringproc

関数: striml (seq, string)

stringの左端だけトリムすることを除いて strimと同様です。

Categories:  Package stringproc

関数: strimr (seq, string)

stringの右端だけトリムすることを除いて strimと同様です。

Categories:  Package stringproc

関数: stringp (obj)

objが文字列なら trueを返します。 例はイントロダクションを参照してください。

関数: substring  
    substring (string, start)  
    substring (string, start, end)

位置 startで始まり位置 endで終わる stringの部分文字列を返します。 位置 endの文字は含まれません。 もし endが与えられないなら、部分文字列は文字列の残りを含みます。 stringの一番目の文字は位置 1にあることに注意してください。

例:

 
(%i1) substring("substring",4);
(%o1)                        string
(%i2) substring(%,4,6);
(%o2)                          in

Categories:  Package stringproc

関数: supcase  
    supcase (string)  
    supcase (string, start)  
    supcase (string, start, end)

stringの位置 startから endまでの小文字を対応する大文字に置き換えた文字列を返します。 もし endが与えられないなら、 startから stringの終わりまでのすべての小文字が置き換えられます。

例:

 
(%i1) supcase("english",1,2);
(%o1)                        English

Categories:  Package stringproc

関数: tokens  
    tokens (string)  
    tokens (string, test)

stringから抽出されたトークンのリストを返します。 トークンは、文字があるテスト関数を満たす部分文字列です。 もしtestを与えないなら、 constituentをデフォルトテストとして使います。 {constituent, alphacharp, digitcharp, lowercasep, uppercasep, charp, characterp, alphanumericp}はテスト関数一式です。 (tokensの LispバージョンはPaul Grahamによって書かれました。 ANSI Common Lisp, 1996, page 67.)

例:

 
(%i1) tokens("24 October 2005");
(%o1)                  [24, October, 2005]
(%i2) tokens("05-10-24",'digitcharp);
(%o2)                     [05, 10, 24]
(%i3) map(parse_string,%);
(%o3)                      [5, 10, 24]

Categories:  Package stringproc


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

84.5 Octets and Utilities for Cryptography

関数: base64 (arg)

argの base64表現を文字列として返します。 引数 argは文字列か非負整数かオクテットのリストです。

例:

 
(%i1) base64: base64("foo bar baz");
(%o1)                          Zm9vIGJhciBiYXo=
(%i2) string: base64_decode(base64);
(%o2)                            foo bar baz
(%i3) obase: 16.$
(%i4) integer: base64_decode(base64, 'number);
(%o4)                       666f6f206261722062617a
(%i5) octets: base64_decode(base64, 'list);
(%o5)            [66, 6F, 6F, 20, 62, 61, 72, 20, 62, 61, 7A]
(%i6) ibase: 16.$
(%i7) base64(octets);
(%o7)                          Zm9vIGJhciBiYXo=

もし argがウムラウト(127より大きなオクテット)含むなら、 結果のbase64文字列はプラットフォーム依存であることに注意してください。 しかし、デコードされた文字列はオリジナルと同じになります。

Categories:  Package stringproc

関数: base64_decode  
    base64_decode (base64-string)  
    base64_decode (base64-string, return-type)

デフォルトでは base64_decodebase64-stringを元の文字列にデコードします。

オプション引数 return-typeを与えると base64_decodeは代わりに対応する数やオクテットのリストを返します。 return-typestringnumber, listです。

例: base64を参照してください。

Categories:  Package stringproc

関数: crc24sum  
    crc24sum (octets)  
    crc24sum (octets, return-type)

デフォルトでは crc24sumは オクテットリストの CRC24チェックサムを文字列として返します。

オプション引数 return-typeを与えると crc24sumは代わりに対応する数かオクテットリストを返します。 return-typestringnumber, listです。

例:

 
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.22 (GNU/Linux)

iQEcBAEBAgAGBQJVdCTzAAoJEG/1Mgf2DWAqCSYH/AhVFwhu1D89C3/QFcgVvZTM
wnOYzBUURJAL/cT+IngkLEpp3hEbREcugWp+Tm6aw3R4CdJ7G3FLxExBH/5KnDHi
rBQu+I7+3ySK2hpryQ6Wx5J9uZSa4YmfsNteR8up0zGkaulJeWkS4pjiRM+auWVe
vajlKZCIK52P080DG7Q2dpshh4fgTeNwqCuCiBhQ73t8g1IaLdhDN6EzJVjGIzam
/spqT/sTo6sw8yDOJjvU+Qvn6/mSMjC/YxjhRMaQt9EMrR1AZ4ukBF5uG1S7mXOH
WdiwkSPZ3gnIBhM9SuC076gLWZUNs6NqTeE3UzMjDAFhH3jYk1T7mysCvdtIkms=
=WmeC
-----END PGP SIGNATURE-----
 
(%i1) ibase : obase : 16.$
(%i2) sig64 : sconcat(
 "iQEcBAEBAgAGBQJVdCTzAAoJEG/1Mgf2DWAqCSYH/AhVFwhu1D89C3/QFcgVvZTM",
 "wnOYzBUURJAL/cT+IngkLEpp3hEbREcugWp+Tm6aw3R4CdJ7G3FLxExBH/5KnDHi",
 "rBQu+I7+3ySK2hpryQ6Wx5J9uZSa4YmfsNteR8up0zGkaulJeWkS4pjiRM+auWVe",
 "vajlKZCIK52P080DG7Q2dpshh4fgTeNwqCuCiBhQ73t8g1IaLdhDN6EzJVjGIzam",
 "/spqT/sTo6sw8yDOJjvU+Qvn6/mSMjC/YxjhRMaQt9EMrR1AZ4ukBF5uG1S7mXOH",
 "WdiwkSPZ3gnIBhM9SuC076gLWZUNs6NqTeE3UzMjDAFhH3jYk1T7mysCvdtIkms=" )$
(%i3) octets: base64_decode(sig64, 'list)$
(%i4) crc24: crc24sum(octets, 'list);
(%o4)                          [5A, 67, 82]
(%i5) base64(crc24);
(%o5)                              WmeC

Categories:  Package stringproc

関数: md5sum  
    md5sum (arg)  
    md5sum (arg, return-type)

文字列か非負整数かオクテットのリストの MD5チェックサムを返します。 デフォルトの戻り値は32ヘックス文字を含む文字列です。

オプション引数 return-typeを与えると md5sumは代わりに対応する数かオクテットリストを返します。 return-typestringnumber, listです。

例:

 
(%i1) ibase: obase: 16.$
(%i2) msg: "foo bar baz"$
(%i3) string: md5sum(msg);
(%o3)                  ab07acbb1e496801937adfa772424bf7
(%i4) integer: md5sum(msg, 'number);
(%o4)                 0ab07acbb1e496801937adfa772424bf7
(%i5) octets: md5sum(msg, 'list);
(%o5)        [0AB,7,0AC,0BB,1E,49,68,1,93,7A,0DF,0A7,72,42,4B,0F7]
(%i6) sdowncase( printf(false, "~{~2,'0x~^:~}", octets) );
(%o6)           ab:07:ac:bb:1e:49:68:01:93:7a:df:a7:72:42:4b:f7

もし argがドイツ語のウムラウトや他の非ASCII文字(127より大きなオクテット)含むなら、 MD5チェックサムはプラットフォーム依存であることに注意してください。

Categories:  Package stringproc

関数: mgf1_sha1  
    mgf1_sha1 (seed, len)  
    mgf1_sha1 (seed, len, return-type)

可変長の擬似乱数を返します。 デフォルトでは戻り値は lenオクテットの長さの数字です。

オプション引数 return-typeを使って mgf1_sha1は代わりに lenオクテットの対応するリストを返すことができます。 return-typenumberlistです。

戻り値の計算は RFC 3447 appendix B.2.1 MGF1に記述されています。 SHA1はハッシュ関数として使われます。 すなわち、計算された数字のランダム度は SHA1ハッシュのランダム度に拠ります。

例:

 
(%i1) ibase: obase: 16.$
(%i2) number: mgf1_sha1(4711., 8);
(%o2)                        0e0252e5a2a42fea1
(%i3) octets: mgf1_sha1(4711., 8, 'list);
(%o3)                  [0E0,25,2E,5A,2A,42,0FE,0A1]

Categories:  Package stringproc

関数: number_to_octets (number)

numberのオクテット表現をオクテットのリストとして返します。 numberは非負整数でなければいけません。

例:

 
(%i1) ibase : obase : 16.$
(%i2) octets: [0ca,0fe,0ba,0be]$
(%i3) number: octets_to_number(octets);
(%o3)                            0cafebabe
(%i4) number_to_octets(number);
(%o4)                      [0CA, 0FE, 0BA, 0BE]

Categories:  Package stringproc

関数: octets_to_number (octets)

octetsのリストの中のオクテットを連結し、数を返します。

例: number_to_octetsを参照してください。

Categories:  Package stringproc

関数: octets_to_oid (octets)

octetsのリストからオブジェクト識別子(OID)を計算します。

例: RSA encryption OID

 
(%i1) ibase : obase : 16.$
(%i2) oid: octets_to_oid([2A,86,48,86,0F7,0D,1,1,1]);
(%o2)                      1.2.840.113549.1.1.1
(%i3) oid_to_octets(oid);
(%o3)               [2A, 86, 48, 86, 0F7, 0D, 1, 1, 1]

Categories:  Package stringproc

関数: octets_to_string  
    octets_to_string (octets)  
    octets_to_string (octets, encoding)

現在のシステムのデフォルトに従って octetsのリストを文字列にデコードします。 非US-ASCII文字に対応するオクテットをデコードする時、 結果はプラットフォームやアプリケーション、背後のLispに依存します。

例: システムデフォルトを使う (GCLでコンパイルされた Maxima。 それはフォーマット定義を使わず、 単にGNU/Linux端末がエンコードした UTF-8オクテットを渡します)

 
(%i1) octets: string_to_octets("abc");
(%o1)                            [61, 62, 63]
(%i2) octets_to_string(octets);
(%o2)                                 abc
(%i3) ibase: obase: 16.$
(%i4) unicode(20AC);
(%o4)                                  €
(%i5) octets: string_to_octets(%);
(%o5)                           [0E2, 82, 0AC]
(%i6) octets_to_string(octets);
(%o6)                                  €
(%i7) utf8_to_unicode(octets);
(%o7)                                20AC

Lispリーダの外部フォーマットが UTF-8に等しい場合、 オプション引数 encodingで オクテットを文字列に変換するエンコーディングを設定できます。 もし必要なら 外部フォーマットの変更に関してadjust_external_formatを参照してください。

サポートするエンコーディングのいくつかの名前 (もっと知るには対応する Lispマニュアルを参照してください):
CCL, CLISP, SBCL: utf-8, ucs-2be, ucs-4be, iso-8859-1, cp1252, cp850
CMUCL: utf-8, utf-16-be, utf-32-be, iso8859-1, cp1252
ECL: utf-8, ucs-2be, ucs-4be, iso-8859-1, windows-cp1252, dos-cp850

例 (続き): オプションのエンコーディング引数を使う (GNU/Linux端末, SBCLでコンパイルされた Maxima).

 
(%i8) string_to_octets("€", "ucs-2be");
(%o8)                              [20, 0AC]

Categories:  Package stringproc

関数: oid_to_octets (oid-string)

オブジェクト識別子(OID)を octetsのリストに変換します。

例: octets_to_oidを参照してください。

Categories:  Package stringproc

関数: sha1sum  
    sha1sum (arg)  
    sha1sum (arg, return-type)

文字列か非負整数かオクテットのリストの SHA1フィンガープリントを返します。 デフォルトの戻り値は40ヘックス文字を含む文字列です。

オプション引数 return-typeを与えると sha1sumは代わりに対応する数かオクテットのリストを返します。 return-typestringnumber, listです。

例:

 
(%i1) ibase: obase: 16.$
(%i2) msg: "foo bar baz"$
(%i3) string: sha1sum(msg);
(%o3)              c7567e8b39e2428e38bf9c9226ac68de4c67dc39
(%i4) integer: sha1sum(msg, 'number);
(%o4)             0c7567e8b39e2428e38bf9c9226ac68de4c67dc39
(%i5) octets: sha1sum(msg, 'list);
(%o5)  [0C7,56,7E,8B,39,0E2,42,8E,38,0BF,9C,92,26,0AC,68,0DE,4C,67,0DC,39]
(%i6) sdowncase( printf(false, "~{~2,'0x~^:~}", octets) );
(%o6)     c7:56:7e:8b:39:e2:42:8e:38:bf:9c:92:26:ac:68:de:4c:67:dc:39

もし argがドイツ語のウムラウトや他の非ASCII文字(127より大きなオクテット)含むなら、 SHA1フィンガープリントはプラットフォーム依存であることに注意してください。

Categories:  Package stringproc

関数: sha256sum  
    sha256sum (arg)  
    sha256sum (arg, return-type)

文字列か非負整数かオクテットのリストの SHA256フィンガープリントを返します。 デフォルトの戻り値は64ヘックス文字を含む文字列です。

オプション引数 return-typeを与えると sha256sumは代わりに対応する数かオクテットのリストを返します。 (sha1sumを参照してください)

例:

 
(%i1) string: sha256sum("foo bar baz");
(%o1)  dbd318c1c462aee872f41109a4dfd3048871a03dedd0fe0e757ced57dad6f2d7

もし argがドイツ語のウムラウトや他の非ASCII文字(127より大きなオクテット)含むなら、 SHA256フィンガープリントはプラットフォーム依存であることに注意してください。

Categories:  Package stringproc

関数: string_to_octets  
    string_to_octets (string)  
    string_to_octets (string, encoding)

現在のシステムのデフォルトに従って stringをオクテットのリストにエンコードします。 非US-ASCII文字を含む文字列をエンコードする時、 結果はプラットフォームやアプリケーション、背後の Lispに依存します。

Lispリーダの外部フォーマットが UTF-8に等しい場合、 オプション引数 encodingで オクテットを文字列に変換するエンコーディングを設定できます。 もし必要なら 外部フォーマットの変更に関してadjust_external_formatを参照してください。

例やより詳しい情報は octets_to_stringを参照してください。

Categories:  Package stringproc


[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

This document was generated by 市川雄二 on June, 21 2016 using texi2html 1.76.