私は外部デバイスにパケットを送信する必要があるアプリがあります。このパケットは、終了メッセージの前にCRCを有する。 CRCはCRCHとCRCLで分離する必要があります。 例:CRC = 0x5B CRCHは0x35(ASCII表現は5)、CRCLは0x42(BのASCII表現)にする必要があります。 インターネットで検索しましたが、CRC32を作成するためにCや他の言語でいくつかの関数が見つかりましたが、私のデバイスはCRC8を使用する必要があります。 Objective-CでCRC8をどのように作成できますか?これを行う方法を見つけるのを助けることができますか?目的のCのCRC 8を計算する
答えて
このやや単純な質問はまだ答えられていない方法を驚かせる。
まず、問題の問題を分ける必要があります。 CRHとCRLはちょうど16進数の変換であり、これは簡単です(インターネット上でも多くの例があります)。ほとんどの場合、受け取ったcrcとあなたが計算したcrcを比較する必要があります。したがって、それらを同じ形式に変換するだけで済みます。例えば。あなたが計算したcrcをsprintfと%2X形式を使ってテキストに変換し、受け取ったCRC(テキストとして)と比較してください。
2番目の部分は実際にはCRCです。
1)最も簡単なのは、.mファイルの名前を.mmに変更し、boost C++のCRCライブラリを使用することです。これはちょっと難しいです。それは単なるヘッダーのインクルードなので、コードの残りの部分には何の影響も及ぼさず、別のファイルで作成することもできます。そのため、C関数を使用してボットの下でブーストを使用します。 しかし、あなたのCRCのためのパラメータを見つける必要があるかもしれません。そのために、この優れたリソースを参照してください。http://reveng.sourceforge.net/crc-catalogue/
2)独自の実装を書くことができます。意外にも、インターネットには特定のアルゴリズムの例がたくさんありますが、特定のcrcに最適化されており、他のアルゴリズムに採用することは困難です。
したがって、おそらく最善の策は、Ross Williamsの「CRCエラー検出アルゴリズムへの辛いガイド」から始まるでしょう。それはまたCの例を含んでいます。 そこにすべての技術的なものおよび説明のまわりであなたの頭を得ることは複雑になるかもしれません。
私は自分の実装をJavaで見てみたいと思っています。here。明らかにObjective-Cではありません。しかし、私はそれを見て、あなたは単にあなたの.mファイルにコピー&ペーストしてコンパイルすることができるはずです。おそらくいくつかのタイプを調整します。
パブリックstatic long calculateCRC(パラメータcrcParams、byte [] data)関数とプライベートstatic long(long、int count)関数が必要です。そして恐ろしい見えますが、ちょうどあなたのケースでは、構造体になるべきパラメータクラス:
struct Parameters
{
int width; // Width of the CRC expressed in bits
long polynomial; // Polynomial used in this CRC calculation
bool reflectIn; // Refin indicates whether input bytes should be reflected
bool reflectOut; // Refout indicates whether input bytes should be reflected
long init; // Init is initial value for CRC calculation
long finalXor; // Xor is a value for final xor to be applied before returning result
}
あなたはまた、短い符号なしのタイプ(javaは何の符号なしを持っていない)にあっ種類を調整したい場合があります。しかしそれは完全にうまくいくはずです。
- 1. Cプリプロセッサでの8ビットCRCの計算?
- 2. SourceSafe CRC計算
- 3. 目的の計算で計算する
- 4. 逆メッセージCRC計算
- 5. JavaでのCRC計算
- 6. CRC-ITUでの計算#
- 7. CRC-16(0xFFFF)の計算
- 8. 目的C計算が失敗する
- 9. 目的C計算機のプログラミング変数
- 10. C#.netでファイルのCRC値を計算する方法は?
- 11. CとCの間のCRC計算の移行
- 12. CRC-5正しい計算?
- 13. ISO/IEC 14443a CRC計算
- 14. 奇妙なCRC計算
- 15. classes.dex CRC計算のためのGradleタスク
- 16. IEEE-802.11bでのCRC-16計算
- 17. オンラインCRC計算機を使用してCRC 16ビット
- 18. リバースエンジニアリング8ビットCRC
- 19. php計算済みCRC-CCITT(XModem)
- 20. Ruby on railで32ビットCRCを計算するには?
- 21. 目的関数-cの計算が正しい値を返さない
- 22. ピボットテーブル - 計算項目 - カスタム計算
- 23. 16ビットのチェックサム計算を決定する最も効率的な方法は何ですか? [CRC地獄:-(]
- 24. Zabbix計算項目のトラブル
- 25. C#での日時の計算を計算する
- 26. 計算目的でNSNumberオブジェクトを変換するには?
- 27. CRC-CCITT Kermit 16 in C#
- 28. 目的のコンテンツを計算する方法動きのあるUIScrollViewのオフセット
- 29. 目的c演算子意味
- 30. のC# - 12:00 2:00 8:00から8:00の間で計算し、合計時間