• ベストアンサー

VC6でCRC64・CRC128が出来るソースを探しています。

VC6でCRC64・CRC128が出来るソースを探しています。 CRC自体がよくわかっていないので、実際に動作させて理解しようとネットでソースを見つけようとしていますが、うまくコンパイルできるものが見つかりませんでした。 通常はCRCに1バイトをわたすもの?が多いのですが、できましたら文字列(長さは可変長)も扱える高速な関数を探しています。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.1

★『CRC32』の精度では駄目なのですか? ・下に 32 ビットですが CRC32 のコードを載せておきます。今後の参考にして下さい。 サンプル: DWORD GetCRC32( LPCTSTR lpString ) {  DWORD dwCode = 0xFFFFFFFF;  int no;    while ( *lpString != '\0' ){   for ( dwCode ^= (((DWORD)*lpString) << (32 - 8)), no = 0 ; no < 8 ; no++ ){    if ( dwCode & 0x80000000 ){     dwCode = ((dwCode << 1) ^ 0x04C11DB7);    }    else{     dwCode <<= 1;    }   }   dwCode = (~dwCode & 0xFFFFFFFF);  }  return( dwCode ); } 最後に: ・http://apollo.backplane.com/matt/crc64.html→『18.2 million dataset CRC-64 test & Program source』 ・http://www.efg2.com/Lab/Mathematics/CRC.htm→『efg's Mathematics Projects -- CRC Calculator』 ・上記のリンクを参考文献としてお使い下さい。 ・以上。おわり。

tobasu
質問者

お礼

回答ありがとうございます。100から150バイトの文字列を正確に送りたいために、どうしても64ビットのCRCが必要です。 CRC32ならソースを見つけることができましたがCRC64はなかなか見つけることができませんでした。 本当にCRC64で大丈夫(実はCRC128もしくはCRC32)かはわかりませんが、探しています。 crc64(文字列)で CRC64の値が取得できる関数を探しています。 アセンブラなら高速なので、アセンブラでも構いません。 こういう関係の本も探しています。

関連するQ&A

  • ソースを見せたくないです。

    Perlでプログラムを作っています。 サーバーにUPしたCGIは、平文ですが、 UPされたソースを見ても意味不明な文字列のようにしたいです。 (例:VC++でコンパイル前のソースは見れますが、コンパイル後は全く内容が分からない) CGI/Perlでそのような事は出来ますか?

    • ベストアンサー
    • CGI
  • VC++4.0→VC++6.0

    Visual C++4.0で作成したソースをVisual C++6.0で 読み込ませたい(VC++6.0で再コンパイルしたい)の ですが、.dswファイルを起動しても関連するファイルが 開いてくれません。(ファイルビューには.makしかない) Visual C++6.0で再コンパイルする方法を教えて下さい。 (VC++自体わからないのですが、コンパイル位は出来ます) そもそも出来ないのでしょうか? (VBは可能なので、VC++も出来るのかなと思いまして...)

  • CRCについて

    CRCの算出についてなのですが http://www2c.biglobe.ne.jp/~osakana/vc/pc/crc.html こちらのサイトを参考にすると 1. データを一つ(1バイト)とってきます 2. CRC値を左ビットシフトして、桁上がりがあればさらに生成多項式とXORを取ります 3. データを左ビットシフトして、桁上がりがあればCRC値と1のXORを取ります 4. あと7回(1バイト=8ビットなので)2と3を繰り返します 5. 残りのデータがあれば1に戻ります とあります。 例えばアドレス部00000000にデータ01が入っているもの(ファイルサイズ1バイト)を算出しようとした場合 手計算を行うとCRC16は0001、CRC32は00000001になりそうなのですが いくつかのフリーソフトで実際にバイナリエディタを用いて1バイトのファイルを作成し、試して見たところ CRC16が1E0E CRC32がA505DF1B と出ます。 一般的な算出方法では、上記の説明以外に何か別の処理、初期値などがあるのでしょうか? お分かりになる方是非教えてください。 よろしくお願いします。

  • VC++の最適化

    VC++で、最適化のオプションをつけずに、 デフォルトでコンパイルすると動作するのですが、 実行速度の最適化オプション /O2 をつけると、 特定の動作をさせるときにフリーズしてしまいます。 これを回避させるために、問題の発生する動作にかかわる ソースコード部分にだけ、最適化を行わないようにしたいのですが、どのようにすればよいでしょうか? アドバイスいただけますでしょうか? 環境は Win2000 で VC++6.0 SP3 を使用しています。

  • VC++6.0をコマンドプロンプトで使用する方法

    すみません。http://oshiete1.goo.ne.jp/kotaeru.php3?q=1885181で質問したものですが、戴いた回答に、VC++はコマンドプロンプトでコンパイルできると言うような記述がありました。僕なりにヘルプやインターネットを調べたのですが、わかりません。。 やりたいことは、エディタでCのソースを記述し、任意のフォルダに保存し、そこをカレントディレクトリにしてコマンドプロンプトを開きコンパイル・実行するというものです。要するにJavaみたいな感じでコンパイル・実行したいのです。 使用バージョンは、VC++6.0です。BCCコンパイラ5.5を試したのですが、getcharやgetche関数で意味不明な動作をするものですから、やはりVC++を使用したいなと思い。。 度々の質問で恐縮ですが、分かる方、よろしくお願いいたします。

  • c++の関数をfortranから呼びたい

    c++の関数をfortranから呼びたい windowsXPのコマンドプロンプト上で VC2005でコンパイルしたc++の関数を fortranから呼びたいと思います。 fortranのソースはg77でコンパイルします。 (g77とclコマンドは動作することが 確認出来ています。) 簡単なソースとコンパイル方法を教えて 頂きたくお願いします。

  • VC++.NET と UTF-8

    C++ で書いたソースコードに UTF-8 エンコーディングで(日本語の)コメントをつけたのですが、そのコードを Visual Studio .NET でコンパイルするとコンパイルエラーになりました。 コメントを全部削除したらコンパイルできましたし、intel コンパイラ (windows/linux)、gcc (3.4.4 linux) ではコンパイルできたのですが、VC は UTF-8 が含まれているとコンパイルできない場合があるのでしょうか?あるいはソースが UTF-8 のときに有効なコンパイルフラグなどがあるのでしょうか?ちなみに IDE 上ではそれらのコメントは(文字化けなどなく)ちゃんと表示されてはいます。 よろしくお願いします。

  • VC++でソースを記述中、カーソルが変になりました。

    VC++の開発環境についての、ちょっとした疑問です。 ソースを記述中、カーソルの形が変わってしまいました。 通常短い棒状のカーソルが、一文字だけ選択した時の ような小さな四角いカーソルになりました。 ソリューションを開きなおすとすぐもとに もどりましたが、理由が気になるので、 何かお気づきの方は教えて頂けないでしょうか。 宜しくお願いします。

  • VC++を始めるにあたって

    始めまして。今回会社でVC++でMFCアプリケーションのプログラミングの仕事をすることになりました。  現在の私のスペックです。  [0] 今年入社、毎日プログラムの学習をしてます。  [1] 経験したプログラム   [1-1] C 学生時代、授業で基礎のみ   [1-2] JAVA 同じく授業で基礎のみ   [1-3] VC# 10日で覚えるVC#.netと言う本で学習中    VC++自体始めてなので、関数や書き方も理解してなくて、何から勉強したらいいのか分かりません。 いい勉強方法があれば教えてください。 また参考になるHPや参考書もあれば教えてください。 以上です。お願いします。

  • 文字列を途中から複写(再質問)

    さきほど、↓のような質問をして、回答をいただいたので、 動作確認もせず、回答を締め切ってしまったのですが、 実際につくってみたら、コンパイルで「関数 'CODCfc_Sysdate' は定義されていません。」と言われてしまいました。 ネットでも探してみたのですが、 Cではこの関数は使えないのでしょうか? 何度もすいませんが、どなたか(...というか、先ほど回答くださった方 )教えてください。 --------------------------------------------------------------------- strncpy()を使うと最初からnバイトまで複写というのはできるようですが、 文字列を途中から(例えば10文字中の3番目から5番目までとか)複写することはできないのでしょうか? 教えてください。

専門家に質問してみよう