[過去ログ] 文字コード総合スレ Part12 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
33: ◆QZaw55cn4c [sage] 2018/12/20(木) 07:37:44.12 ID:W1ypdRwu(1) AAS
>>32
32(2): デフォルトの名無しさん [sage] 2018/12/20(木) 07:18:15.99 ID:ojhJ7lIE(2/3) AAS
× 例えばWindows環境だと、C/C++以外の言語でWin32API関数を固有の構造体を入出力に使う場合、アセンブリ並みに低レベルなオフセット調節を自力で行う必要に迫られる。
○ 例えばWindows環境だと、C/C++以外の言語でWin32API関数を固有の構造体を入出力に使う場合、C/C++並みに低レベルなオフセット調節を自力で行う必要に迫られる。
うーん、具体的な win32api 名(だけでいいです)を例示してください.
34: デフォルトの名無しさん [sage] 2018/12/20(木) 07:43:09.20 ID:ojhJ7lIE(3/3) AAS
>>31
31(1): デフォルトの名無しさん [sage] 2018/12/20(木) 06:53:32.14 ID:Epiz8Tj2(2/5) AAS
>>30
例えばWindows環境だと、C/C++以外の言語でWin32API関数を固有の構造体を入出力に使う場合、アセンブリ並みに低レベルなオフセット調節を自力で行う必要に迫られる。
に聞いてください
35
(1): デフォルトの名無しさん [sage] 2018/12/20(木) 08:04:20.01 ID:Epiz8Tj2(3/5) AAS
>>32
勝手に書き換えないでもらいたい。
C/C++だと構造体の各メンバ変数のアラインメントを意識しなくていいが、他の言語だとそうはいかないので、アセンブリと同じようなオフセット調節が必要。
SendMessage(WM_COPYDATA)の送受信データの読み書きなど例はいくらでもある。
36: デフォルトの名無しさん [sage] 2018/12/20(木) 10:08:25.12 ID:48mnxvPx(1) AAS
>>35
>C/C++だと構造体の各メンバ変数のアラインメントを意識しなくていいが

誰に騙された?
37: デフォルトの名無しさん [] 2018/12/20(木) 13:46:21.36 ID:P4Rv6f7s(1) AAS
実行メモリ上はともかく
ファイルやネットワークストリームでLEにするアホいるんか?
38: デフォルトの名無しさん [] 2018/12/20(木) 16:58:53.93 ID:Epiz8Tj2(4/5) AAS
エンディアンもさることながら32/64bit整数の幅調節が厄介。
使っている言語が32/64bitどちら向けでビルドされたものなのかによって構造体メンバのアラインメントを適切に処理する必要が出てくる。
言い換えれば、C/C++で作った構造体をバイト列で渡し、C/C++以外の言語でバイト列を構造体に復元する処理が厄介。
単に構造体の64bit整数メンバだけ気を付けるのではダメで、構造体の全メンバのアラインメントそのものが大きく変わりうることに注意する必要がある。
39: デフォルトの名無しさん [sage] 2018/12/20(木) 18:26:27.50 ID:6OEKrw3R(1) AAS
いや、だからさ、その程度までは理解できてるのに、何故「C/C++だと構造体の各メンバ変数のアラインメントを意識しなくていいが」なんてことを言っちゃうの?
それとアラインメントの話とバイトオーダーの話を混同しないように気を付けた方がいいよ。
40: デフォルトの名無しさん [sage] 2018/12/20(木) 19:07:05.38 ID:oZOw2Nhk(1/2) AAS
C/C++しらないけど、魔法のようにアライメントを
勝手に調整してくれるんじゃないの?想像しただけで
41: デフォルトの名無しさん [] 2018/12/20(木) 21:19:19.38 ID:/Up9dRku(1/8) AAS
Unicodeは普通にリトルエンディアンもありだ

なんで Byte Order Mark(BOM) がファイルの先頭に入ってるのか分かってない
Javaバイトコードのcafe babeみたいな飾りだと思ってんの

リトルエンディアンの計算機ばっかりがあるとこで
ビッグエンディアンでファイルを保存する理由なんかないからな

当然、そういったコンテンツデータがHTTPでも流れてくる
42: デフォルトの名無しさん [] 2018/12/20(木) 21:20:17.21 ID:/Up9dRku(2/8) AAS
やっぱりこの板には
クルクルパーしかいない

そしてそのクルクルパーの声だけがでかい

やっぱりな低学歴知恵遅れは
この板から排除する必要がある
板が正常に機能しない
43: デフォルトの名無しさん [sage] 2018/12/20(木) 21:26:52.62 ID:gpCj1726(1/3) AAS
アライメントはふつうコンパイラが適切に調整してくれるよね。
32/64bitで整数サイズの違いでメンバオフセットが変わるってのはアライメントとは別の話。
44: デフォルトの名無しさん [] 2018/12/20(木) 21:31:46.95 ID:/Up9dRku(3/8) AAS
32bitなら
ちゃんと32bitに詰まるように
メンバの順序かえる
45
(1): デフォルトの名無しさん [] 2018/12/20(木) 21:38:37.03 ID:/Up9dRku(4/8) AAS
char unko
char foo
int aho
short poi
char baka
int manuke
short boo
char woo



int manuke
----
int aho
----
short poi
short boo
----
char unko
char foo
char baka
char woo

64bitでも考え方は同じ
強制パッキングのオプション使えるコンパイラもある
46: デフォルトの名無しさん [sage] 2018/12/20(木) 21:42:31.32 ID:oZOw2Nhk(2/2) AAS
今問題としてるのはファイルの話だ。
32bitシステムで作られたファイルを64bitシステムに
持ってきたとしてもファイルの内容が変わるわけじゃない

つまりC/C++で32bitでint型で扱っていたからと言って
64bitでもint型で扱ってはいけないということだ
47: デフォルトの名無しさん [] 2018/12/20(木) 21:44:56.46 ID:/Up9dRku(5/8) AAS
バカがよくやる誤りは
メモリ境界をまたぐ位置で64bit値を参照したりして
バスエラーを起こす

シリアライズデータを直に参照できると思ってるバカがあとをたたない
CISCの計算機しか使ったことないサル並の脳みそのヤツがよくやる
48: デフォルトの名無しさん [] 2018/12/20(木) 21:53:38.53 ID:/Up9dRku(6/8) AAS
そんなファイル読み込むときに
普通にintなんか使わないからな
そんなことは低学歴知恵遅れしか発想できない

utf16なら16bit単位(uint16_t)
utf32なら32bit単位(uint16_t)
で読み込む

リトルエンディアンの計算機で
ビッグエンディアンのUnicode読む場合は
16bit単位なら16bit単位でオクテット列の並びを逆転させる
32bit単位なら32bit単位でオクテット列の並びを逆転させる

リトルエンディアンの計算機で
リトルエンディアンのファイル読み込むならオクテット列の並びを逆転させる必要はない

ビッグエンディアンならその逆になる

低学歴知恵遅れはこういった基本的な理解がない
49: デフォルトの名無しさん [sage] 2018/12/20(木) 21:59:01.65 ID:gpCj1726(2/3) AAS
>>45
C/C++の規格じゃ構造体のメンバは宣言された順にアドレスが増加するよう並べられることになっている。
仮に>>45のような最適化を行うことができる処理系が存在したとしても、一般的と言えるものではない。
50: デフォルトの名無しさん [sage] 2018/12/20(木) 21:59:21.79 ID:KozHiIkR(1) AAS
one little two little three little endians
51: デフォルトの名無しさん [] 2018/12/20(木) 22:00:12.93 ID:/Up9dRku(7/8) AAS
だからそう書いてる
手動で自分で並べ替える
52: デフォルトの名無しさん [sage] 2018/12/20(木) 22:12:47.37 ID:gpCj1726(3/3) AAS
自分で並べ替えろって話か。それは勘違いした、すまん。
53: デフォルトの名無しさん [sage] 2018/12/20(木) 22:23:36.55 ID:tzmwAGAt(1/2) AAS
結局C/C++でもアライメント意識して、自分で適切な型を選択しているってわけさ
他の言語でも一緒。ただし型が違うからバイト数を指定するだけの話
54: デフォルトの名無しさん [sage] 2018/12/20(木) 23:02:54.77 ID:Epiz8Tj2(5/5) AAS
PGならば、楽するためにJava/C#/Python/Perl/Rubyなどを使ってたはずなのに、C++よりめんどくさくなって心が折れそうになる経験を一度はしておいたほうがいい。
55: デフォルトの名無しさん [sage] 2018/12/20(木) 23:23:21.93 ID:tzmwAGAt(2/2) AAS
いや、C++よりも面倒なことってないから
そんな経験するのは無理だよ
56: デフォルトの名無しさん [] 2018/12/20(木) 23:49:16.62 ID:/Up9dRku(8/8) AAS
やはり低学歴知恵遅れには
C++はむり

レスみればよく分かる
レスから頭の悪さがにじみ出てる

低学歴のレスはすぐにわかるわ
残念なことに
57
(1): デフォルトの名無しさん [sage] 2018/12/21(金) 12:36:36.76 ID:C7PBMVlX(1) AAS
データのアラインメントはどんな言語を使うにしても気にする必要がある。
しかし、Windows が VisualC++ でビルドされていて、VisualC++
もしくは互換のアラインメントができる言語でアプリを組めば、
気にしなくてもよい、ということだけだろう。
1-
あと 945 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.017s