C#プログラミング

Programming プログラミング

31d491cd anonymous 2013-05-30 01:54
Dictd
http://tradic.sourceforge.jp/dict
に用いるデータを作るプログラムなんですが

int okisa = UTF8.GetByteCount(seibun[1]);
byte[] bBasho = BitConverter.GetBytes(basho);
byte[] bOkisa = BitConverter.GetBytes(okisa);
string sBasho = Convert.ToBase64String(bBasho);
string sOkisa = Convert.ToBase64String(bOkisa);
index.WriteLine("{0}\t{1}\t{2}", seibun[0], sBasho, sOkisa);
dictd.Write(seibun[1]);
basho += (uint)okisa;

実際HPではAってなってる場所がAAAAAAAA==みたいな感じになってるので
明らかに壊れてるんだろうけど

Dictdの仕様が詳しくわからないのと
こんなにぐちゃぐちゃにしなくちゃいけないのか
uintからHPでいう所のBase64に単純に変換するクラスがあってもいいはずなんだが

とりあえず手動で置換するクラスをいちいち作って試してみます
451e3a79 anonymous 2013-05-30 02:05
なんか用意されてるクラス使ってるのが怪しく思えてきた
単純な話、数値から64進数の文字列に変えればいいだけのような気がする
進数変換は中学生レベルの内容なのでそうであれば簡単だな
55b68c5c anonymous 2013-05-30 11:27
単なる進数変換で動作しました
dictdの仕様はよくわかりませんがindexにある単語を引くとクエリにエラーは起きない
ただ読み取る場所が1つずれてるようだ
読み取った場所の1つ下の単語は2つずれている
改行復帰コードか文字列末端コードかその辺の要因かなと想像している
6cae1d54 anonymous 2013-05-31 04:24
完全に解決しました。
位置ずれはdictファイルに0xEFBBBFというヘッダー3バイトがあるのが原因でした。
indexファイルの先頭を00-database-utf8\tA\tD、1番目の単語を3つまりDから開始すればよいです。
dictサーバーを運用する人は少ないと思うけど仕様の情報が少ないので参考にしてくださいな。

Top of this page. |

limit: 1536KB

Programming プログラミング

(C#プログラミング/4/0.0MB)

Powered by shinGETsu.