RS232C通信を利用してテキストの送受信ができるプログラムを作っています。
環境はVMwareを使いwindows xpのコマンドプロで作成しています。
その中でサムチェックを行い誤り検出をしたいのですが、サムチェック関数がうまくつくれません。
入力したテキストデータ下位1バイトををASCIIコード2桁に変換するというものです。
自分なりに関数を作ってみたのでどこが悪いのか確認していただけらばなと思います
。
/*********************************************************************/ /* サム算出関数 */ /* IN: n サムチェック対象データのバイト数 */ /* *str サムチェックを行うデータ */ /* *sum サムを格納するポインタ */ /*********************************************************************/ void sum_check(int n,char *str, char *sum) { int i; int a; /* 16進データの格納エリア */ char sumbuf; /* サムチェック結果の一時保存用バッファ */ for(i=0;i<n;i++) { a = str[i]; /* strに格納されている16進を代入 */ sumbuf = sumbuf+a; } sum = sumbuf%100; /* サムの下二桁の表示 */ }
コンパイルエラーなのでしたら, そのエラーもご提示ください.
そしてそのエラーの何が分からないのかをお書きください.
返信ありがとうございます。
コンパイルエラー以前の問題で、
文字列の文字を16進数に変える方法が分からないのと、16進数の合計の出し方が分からないというものです。
例えば”AB”という文字列をサムチェックする場合、
Aの16進表示である0x41とBの16進表示である0x42 この合計を83H(hex)としてsumを求めたいのですがその方法が分からず困っています。
> 文字列の文字を16進数に変える方法が分からないのと、16進数の合計の出し方が分からないというものです。
つまり, ご質問の本質は 232C もチェックも関係無いのですね.
そのようにご質問を編集頂くと良いかと思いました.
意見ありがとうございます。
質問されて分かりましたが確かに本質が違っていました。
修正または新規で質問させていこうと思います。
ありがとうございます。
https://teratail.com/help#posted-otherservice
読んで、そのようにしてね。
回答3件
あなたの回答
tips
プレビュー