No.6ベストアンサー
- 回答日時:
「チェックサムの算出」と考えてよいのでしょうか?
だとすれば…
#define MAX 文字列長
unsigned char *buf = ".....................";
int cnt, sum ;
for (sum = 0, cnt = 0 ; cnt < MAX ; cnt++) {
sum += buf[cnt] ;
}
この状態で(sum & 0x00ff)に算出されます。
No.5
- 回答日時:
補足を見てもよく分からないのですが、
そもそも「加算」というのは、ある数に別のある数を加えるわけですよね。
「1バイトずつ加算する」というのは、何に何を加えるんですか?
No.4
- 回答日時:
手元にCの処理系がない&Cをやるのは久しぶりなので実際に試してみてくださいね。
bytesum()
{
unsigned char wbuf;
/*実際に値を入れるところはポインタではダメなので変数を定義する*/
char filename[]="filename";
int fd;
unsigned char buf;
fd=open(filename,0)/*0はreadonly*/
if(fd==-1){/*エラー処理*/}
wbuf=0;
do{
flg=read(fd,buf,1); /*1文字読む。読めなかったらflg=0*/
wbuf=wbuf+buf;
}while (flg<>0);/*読めてる間繰り返す*/
close(fd);
}/*終わり*/
こんな感じでできると思いますが、質問とちょっと違いますね。
>*wbuf = XXXXXXXXXXXXXXXXXXXXXX ;
このあたりの意味がよくわかりませんが、既にbuffer[100]とかにファイルが読み込まれているのなら、こんなことでしょうか?
bytesum()
{
int i;
unsigned char *wbuf,wk;
wbuf=&buffer[0] /*ポインタに配列の先頭アドレスを代入*/
wk=0
for(i=0;99;1){
wk=wk+*wbuf;/*ポインタの示しているところの値を加え*/
wbuf++; /*その後ポインタを次に進める*/
}
}
う~ん、Cの現役の方のサポートお願いします(^_^;)
No.3
- 回答日時:
unsigned char型変数に普通に加算していけばいいです。
もちろんはじめはゼロでクリアしてからですが。char型変数は1文字分しかはいりませんので、加算してオーバーフローした上位bitは捨てられていきます。ですから何もしなくても計算結果の最後の1バイトが残ります。
-----
こういう意味かな?
この回答への補足
有難うございます。
たぶん、そうなんです。
えっとやりたいことですが
ファイルをバイナリエディタで見ると
0x49 0xfc 0x31 0x9e ・・・・・と見ることができますよね。
で、これを1byteずつ値を加算して 結果の1byteだけを取得したいんです。
で、ファイルを作る前にこのファイルの中味を編集してるロジックで1byteずつ
加算するっていう処理を入れたいのですが、
char *wbuf; /* ファイルの編集内容をいれる */
for( )
{
*wbuf = XXXXXXXXXXXXXXXXXXXXXX ;
/* 1バイトずつ値を代入している */
wbuf++;
/* ここで1byteずつ何かしらの変数にwbuffの値を加算していきたい*/
}
*wbuffのポインタ変数での値を1byteずつchar の変数に加算したい。
そのコーディング方法を教えてください。
意味わかりますでしょうか??・
No.2
- 回答日時:
0x49 0xfc 0x31 0x9e 0x9e を
0x4a 0xfd 0x32 0x9f 0x9f を
ということでよろしいでしょうか?
だとするとこんなかんじかと
char pls_chr (*a){
while(*a!='\0'){
(*a)++;
a++;
}
a--;
return *a;
}
それとも1バイトずらすということでしょうか?
No.1
- 回答日時:
質問がちょっとよくわからないです。
文字列が変数aに入るようにはなってません。>配列に入ります
文字列の値を1バイト加算する。>1バイトって8ビットのことだと思うのですが、単位がめちゃくちゃだと思います。
アドレスを移動する意味なのか数値として扱って加算したいのかコードテーブルの次の文字を表示したいのかよくわかりませんがそのうちのどれかなのでしょうね。
配列にきっちり文字が入っているのなら、最後の一文字を取るという場合は、a[4]のようにその場所を指定してchar型の変数にでも格納すれば、取得できます。
最後の一文字がわからないのなら、はじめのほうから順に見ていって、0x00(でしたっけ?NULL)の手前の文字を取得すればそれ。
本当に変数にビットが並んでいるだけなんだったら変数がintとかなんだったら、000000000FFFFのようなものをANDで計算すれば欲しいものが取れます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(コンピューター・テクノロジー) 【Tableau Desktop】文字列から8桁の数字を日付型(yyyyMMdd)として取得 1 2023/07/31 10:17
- その他(プログラミング・Web制作) Tを主張Sの前後に文字列を追加したものとし、Tを教えて!gooで削除されないようにできる? 2 2023/02/10 15:35
- Excel(エクセル) エクセル 関数について質問です。 2 2022/10/03 11:14
- その他(プログラミング・Web制作) awkの文字列比較はPOSIXロケールまたはCロケールにおいてバイナリ値の比較に使えるか gawkな 1 2023/04/22 09:21
- フリーソフト OpenOffice 表計算で文字としてコピペ 2 2023/05/31 11:11
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- PHP 空文字 "" ですが 空文字の意味を教えてください。 3 2022/08/05 03:51
- Java java 入力された文字列を数値に置き換えて整数にし、計算をしたいです。 <を10として /を1とし 4 2022/05/16 21:08
- Excel(エクセル) バイナリー演算を勉強したい 1 2023/04/19 14:17
- Excel(エクセル) excelにて、ある固定値から連番を振りたいが、上限値が異なる連番を振る処理を複数回行いたい場合 6 2022/10/22 11:01
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
char*を初期化したいのですが
-
CStringからchar*への型変換に...
-
strcat関数を自作したいです
-
C言語にて構造体のメンバがNULL...
-
2次元配列をポインタで参照した...
-
csvファイルをfscanfで読み込む...
-
char 文字列型 の表現範囲が-12...
-
strcpy関数で文字型変数へのポ...
-
char型にint型の数値を代入する。
-
new charとnew char[N]の違いは?
-
char AA[]{"全角文字"};から"全...
-
fstream型オブジェクトを関数の...
-
SubStringの使い方について
-
C言語を用いた環境変数の作成/...
-
C言語(C89)での文字列代入
-
文字列strの中から文字cを探す...
-
fgetc( )の戻り値はなぜ整数??
-
小数点入りの文字列をfloat型に...
-
C言語のmemcpy関数について質問...
-
C言語のプログラムについてです
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語のintとcharの違いってな...
-
char*を初期化したいのですが
-
C言語にて構造体のメンバがNULL...
-
CStringからchar*への型変換に...
-
strcat関数を自作したいです
-
new charとnew char[N]の違いは?
-
csvファイルをfscanfで読み込む...
-
char型にint型の数値を代入する。
-
動的メモリの初期化方法について。
-
C言語で文字列をかえす正しい書...
-
文字列str内の全ての数字を...
-
char 文字列型 の表現範囲が-12...
-
DWORDとcharの変換
-
fstream型オブジェクトを関数の...
-
小数点入りの文字列をfloat型に...
-
C言語のプログラムについてです
-
const char* s1とただのchar s1...
-
文字列内の数字削除
-
c言語でポインタ変数を用いた配...
-
szとlpszの違い
おすすめ情報