No.2ベストアンサー
- 回答日時:
うー。
困りました。これだけでは不確定な要素が多すぎます。
(1)aやbには、きちんとしたポインタが入っているか?
unsigned char *a;のようにしただけでは、
「ポインタ変数」が宣言されただけで、
正しいポインタとして使えるわけではありません。
ポインタ変数を宣言したあとに
a = (unsigned char *)malloc(...);
のようにして、領域を確保しなければなりません。
これは変数bも同じです。
(2)xとyの型は何か?
int型かlong型なら、これは問題ないでしょう。
(3)結局何をしたいのか?
(3-1)unsigned char(0~255)の値を*bに転送したい。
(3-2)unsigned charが二つ並んだ値をひとつのunsigned intとして*bに転送したい。
(3-2)の場合はこのプログラムではいけません。
Ui = *(unsigned int*)(a+x+y);
としてください。
(3-1)の場合は別の問題になります。
あとチェックするべきところは
(4)エンディアンの問題はないか?
(5)アラインメントの問題はないか?
(もっともバイトアドレスということだから大丈夫なのでしょうが)
(6)a+x+yのポインタ値は、確保した領域をはみだしてはいないか?
考えられるのは上記のことぐらいです。
それで解決しなければ、すみません、わかりません。
アドバイスありがとうございます。
確かNo.1さんのお礼書きのようでした。
左辺に式があるのでここがクサイと(さっき)思いつきました。 しかし
Ui = *(unsigned int*)(a+x+y);
としてください。
さすが! 専門家ですね。
明日早速ためします。 でも
(4)エンディアンの問題はないか?
(5)アラインメントの問題はないか?
ってよくわかりません。
又、何卒宜しくお願い致します。
*(b+xx+yy) =Ui + *(b+xx+yy);
でした。 質問があやふやなので、もう一度明日確かめます。 とりかかりのきっかけができました!
No.1
- 回答日時:
打ち込みミスかどうかはよくわかりませんが・・・
Ui=(unsigned int)(*a+x+y);
では、ないでしょうか?ただし、xとyが、
unsigned char x,y;
と言った類と仮定してですが。
ただし、オーバーフローを考えると、
Ui= (unsigned int)(*a)+(unsigned int)x+(unsigned int)y;
かもしれません。xとyの型がunsigned intなら上の文でもいけると思いますが・・・
御回答ありがとうございます。
チョットあわてて質問してしまいました。 ええっと?
.
.
yy = y*SizeX;
xx = x*sizeof(unsined int);
Ui = (unsigned int)*(a+x+y);
*(b+xx+yy) =Ui;
.
.
だったような。 このところがうまくいかなくて1日解決しませんでした。 あぁ!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語 共用体について コマンドライン引数で値を2つ入力したときに、argv[2]の値をUNI u1 4 2022/04/25 20:34
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- C言語・C++・C# プログラミングのペーパーテスト 実行結果の表示を答えてください #include <stdio.h> 2 2022/07/09 16:14
- C言語・C++・C# カードシャッフルのブログラムを使ってc言語でブラックジャックをしたい 2 2022/04/12 15:13
- C言語・C++・C# 並列プログラミングのπ計算について 1 2022/07/16 22:30
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
セグメントエラー
-
init関数の意味
-
Run-Time Check Failure #3とい...
-
アプリを32bitから64bit移行
-
DLL<->VB間での受け渡し(文字...
-
C言語のポインタに直接アドレス...
-
LPSTR型の初期化について
-
参照型で受け取った引数をポイ...
-
戻り値で構造体を返すことは可...
-
構造体とfscanf
-
fopne で失敗する原因
-
NASMかNASKの文法の本
-
関数ポインタの高速化のメリット
-
自作関数の引数
-
Cで作成したDLL関数をVBから呼...
-
popenした子プロセスのプロセス...
-
#define NULL ((void *)0) の弊害
-
C言語のプログラムをJavaに...
-
visual studioのエラーについて
-
x64プログラムでアドレスが32bi...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
セグメントエラー
-
C言語のポインタに直接アドレス...
-
init関数の意味
-
戻り値で構造体を返すことは可...
-
fopne で失敗する原因
-
C言語の関数と配列に関する質問
-
Run-Time Check Failure #3とい...
-
LPSTR型の初期化について
-
ExcelVBAでのkernel32(64bit)
-
main(int argc,char **argv[])...
-
アプリを32bitから64bit移行
-
ハンドルはポインタか
-
連結リスト 要素の入れ替え
-
C言語でのconstを返す関数
-
Cで作成したDLL関数をVBから呼...
-
NULLとブランクの違い
-
エラーの意味
-
ハンドル、アドレス、ポインタ...
-
DLL<->VB間での受け渡し(文字...
-
【C言語】戻り値が構造体の関数
おすすめ情報