[過去ログ]
文字コード総合スレ Part12 (1002レス)
文字コード総合スレ Part12 http://mevius.5ch.net/test/read.cgi/tech/1544931495/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
31: デフォルトの名無しさん [sage] 2018/12/20(木) 06:53:32.14 ID:Epiz8Tj2 >>30 例えばWindows環境だと、C/C++以外の言語でWin32API関数を固有の構造体を入出力に使う場合、アセンブリ並みに低レベルなオフセット調節を自力で行う必要に迫られる。 http://mevius.5ch.net/test/read.cgi/tech/1544931495/31
32: デフォルトの名無しさん [sage] 2018/12/20(木) 07:18:15.99 ID:ojhJ7lIE × 例えばWindows環境だと、C/C++以外の言語でWin32API関数を固有の構造体を入出力に使う場合、アセンブリ並みに低レベルなオフセット調節を自力で行う必要に迫られる。 ○ 例えばWindows環境だと、C/C++以外の言語でWin32API関数を固有の構造体を入出力に使う場合、C/C++並みに低レベルなオフセット調節を自力で行う必要に迫られる。 http://mevius.5ch.net/test/read.cgi/tech/1544931495/32
33: ◆QZaw55cn4c [sage] 2018/12/20(木) 07:37:44.12 ID:W1ypdRwu >>32 うーん、具体的な win32api 名(だけでいいです)を例示してください. http://mevius.5ch.net/test/read.cgi/tech/1544931495/33
34: デフォルトの名無しさん [sage] 2018/12/20(木) 07:43:09.20 ID:ojhJ7lIE >>31に聞いてください http://mevius.5ch.net/test/read.cgi/tech/1544931495/34
35: デフォルトの名無しさん [sage] 2018/12/20(木) 08:04:20.01 ID:Epiz8Tj2 >>32 勝手に書き換えないでもらいたい。 C/C++だと構造体の各メンバ変数のアラインメントを意識しなくていいが、他の言語だとそうはいかないので、アセンブリと同じようなオフセット調節が必要。 SendMessage(WM_COPYDATA)の送受信データの読み書きなど例はいくらでもある。 http://mevius.5ch.net/test/read.cgi/tech/1544931495/35
36: デフォルトの名無しさん [sage] 2018/12/20(木) 10:08:25.12 ID:48mnxvPx >>35 >C/C++だと構造体の各メンバ変数のアラインメントを意識しなくていいが 誰に騙された? http://mevius.5ch.net/test/read.cgi/tech/1544931495/36
37: デフォルトの名無しさん [] 2018/12/20(木) 13:46:21.36 ID:P4Rv6f7s 実行メモリ上はともかく ファイルやネットワークストリームでLEにするアホいるんか? http://mevius.5ch.net/test/read.cgi/tech/1544931495/37
38: デフォルトの名無しさん [] 2018/12/20(木) 16:58:53.93 ID:Epiz8Tj2 エンディアンもさることながら32/64bit整数の幅調節が厄介。 使っている言語が32/64bitどちら向けでビルドされたものなのかによって構造体メンバのアラインメントを適切に処理する必要が出てくる。 言い換えれば、C/C++で作った構造体をバイト列で渡し、C/C++以外の言語でバイト列を構造体に復元する処理が厄介。 単に構造体の64bit整数メンバだけ気を付けるのではダメで、構造体の全メンバのアラインメントそのものが大きく変わりうることに注意する必要がある。 http://mev
ius.5ch.net/test/read.cgi/tech/1544931495/38
39: デフォルトの名無しさん [sage] 2018/12/20(木) 18:26:27.50 ID:6OEKrw3R いや、だからさ、その程度までは理解できてるのに、何故「C/C++だと構造体の各メンバ変数のアラインメントを意識しなくていいが」なんてことを言っちゃうの? それとアラインメントの話とバイトオーダーの話を混同しないように気を付けた方がいいよ。 http://mevius.5ch.net/test/read.cgi/tech/1544931495/39
40: デフォルトの名無しさん [sage] 2018/12/20(木) 19:07:05.38 ID:oZOw2Nhk C/C++しらないけど、魔法のようにアライメントを 勝手に調整してくれるんじゃないの?想像しただけで http://mevius.5ch.net/test/read.cgi/tech/1544931495/40
41: デフォルトの名無しさん [] 2018/12/20(木) 21:19:19.38 ID:/Up9dRku Unicodeは普通にリトルエンディアンもありだ なんで Byte Order Mark(BOM) がファイルの先頭に入ってるのか分かってない Javaバイトコードのcafe babeみたいな飾りだと思ってんの リトルエンディアンの計算機ばっかりがあるとこで ビッグエンディアンでファイルを保存する理由なんかないからな 当然、そういったコンテンツデータがHTTPでも流れてくる http://mevius.5ch.net/test/read.cgi/tech/1544931495/41
42: デフォルトの名無しさん [] 2018/12/20(木) 21:20:17.21 ID:/Up9dRku やっぱりこの板には クルクルパーしかいない そしてそのクルクルパーの声だけがでかい やっぱりな低学歴知恵遅れは この板から排除する必要がある 板が正常に機能しない http://mevius.5ch.net/test/read.cgi/tech/1544931495/42
43: デフォルトの名無しさん [sage] 2018/12/20(木) 21:26:52.62 ID:gpCj1726 アライメントはふつうコンパイラが適切に調整してくれるよね。 32/64bitで整数サイズの違いでメンバオフセットが変わるってのはアライメントとは別の話。 http://mevius.5ch.net/test/read.cgi/tech/1544931495/43
44: デフォルトの名無しさん [] 2018/12/20(木) 21:31:46.95 ID:/Up9dRku 32bitなら ちゃんと32bitに詰まるように メンバの順序かえる http://mevius.5ch.net/test/read.cgi/tech/1544931495/44
45: デフォルトの名無しさん [] 2018/12/20(木) 21:38:37.03 ID:/Up9dRku 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でも考え方は同じ 強制パッキングのオプション使えるコンパイラもある http://mevius.5ch.net/test/read.cgi/tech/1544931495/45
46: デフォルトの名無しさん [sage] 2018/12/20(木) 21:42:31.32 ID:oZOw2Nhk 今問題としてるのはファイルの話だ。 32bitシステムで作られたファイルを64bitシステムに 持ってきたとしてもファイルの内容が変わるわけじゃない つまりC/C++で32bitでint型で扱っていたからと言って 64bitでもint型で扱ってはいけないということだ http://mevius.5ch.net/test/read.cgi/tech/1544931495/46
47: デフォルトの名無しさん [] 2018/12/20(木) 21:44:56.46 ID:/Up9dRku バカがよくやる誤りは メモリ境界をまたぐ位置で64bit値を参照したりして バスエラーを起こす シリアライズデータを直に参照できると思ってるバカがあとをたたない CISCの計算機しか使ったことないサル並の脳みそのヤツがよくやる http://mevius.5ch.net/test/read.cgi/tech/1544931495/47
48: デフォルトの名無しさん [] 2018/12/20(木) 21:53:38.53 ID:/Up9dRku そんなファイル読み込むときに 普通にintなんか使わないからな そんなことは低学歴知恵遅れしか発想できない utf16なら16bit単位(uint16_t) utf32なら32bit単位(uint16_t) で読み込む リトルエンディアンの計算機で ビッグエンディアンのUnicode読む場合は 16bit単位なら16bit単位でオクテット列の並びを逆転させる 32bit単位なら32bit単位でオクテット列の並びを逆転させる リトルエンディアンの計算機で リトルエンディアンのファイル読み込むならオクテット列の並びを逆転させる必要はない ビッグエンディアンならその逆になる 低
学歴知恵遅れはこういった基本的な理解がない http://mevius.5ch.net/test/read.cgi/tech/1544931495/48
49: デフォルトの名無しさん [sage] 2018/12/20(木) 21:59:01.65 ID:gpCj1726 >>45 C/C++の規格じゃ構造体のメンバは宣言された順にアドレスが増加するよう並べられることになっている。 仮に>>45のような最適化を行うことができる処理系が存在したとしても、一般的と言えるものではない。 http://mevius.5ch.net/test/read.cgi/tech/1544931495/49
50: デフォルトの名無しさん [sage] 2018/12/20(木) 21:59:21.79 ID:KozHiIkR one little two little three little endians http://mevius.5ch.net/test/read.cgi/tech/1544931495/50
51: デフォルトの名無しさん [] 2018/12/20(木) 22:00:12.93 ID:/Up9dRku だからそう書いてる 手動で自分で並べ替える http://mevius.5ch.net/test/read.cgi/tech/1544931495/51
52: デフォルトの名無しさん [sage] 2018/12/20(木) 22:12:47.37 ID:gpCj1726 自分で並べ替えろって話か。それは勘違いした、すまん。 http://mevius.5ch.net/test/read.cgi/tech/1544931495/52
53: デフォルトの名無しさん [sage] 2018/12/20(木) 22:23:36.55 ID:tzmwAGAt 結局C/C++でもアライメント意識して、自分で適切な型を選択しているってわけさ 他の言語でも一緒。ただし型が違うからバイト数を指定するだけの話 http://mevius.5ch.net/test/read.cgi/tech/1544931495/53
54: デフォルトの名無しさん [sage] 2018/12/20(木) 23:02:54.77 ID:Epiz8Tj2 PGならば、楽するためにJava/C#/Python/Perl/Rubyなどを使ってたはずなのに、C++よりめんどくさくなって心が折れそうになる経験を一度はしておいたほうがいい。 http://mevius.5ch.net/test/read.cgi/tech/1544931495/54
55: デフォルトの名無しさん [sage] 2018/12/20(木) 23:23:21.93 ID:tzmwAGAt いや、C++よりも面倒なことってないから そんな経験するのは無理だよ http://mevius.5ch.net/test/read.cgi/tech/1544931495/55
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 947 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.015s