[過去ログ]
文字コード総合スレ Part12 (1002レス)
文字コード総合スレ Part12 http://mevius.5ch.net/test/read.cgi/tech/1544931495/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
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://mevius.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
56: デフォルトの名無しさん [] 2018/12/20(木) 23:49:16.62 ID:/Up9dRku やはり低学歴知恵遅れには C++はむり レスみればよく分かる レスから頭の悪さがにじみ出てる 低学歴のレスはすぐにわかるわ 残念なことに http://mevius.5ch.net/test/read.cgi/tech/1544931495/56
57: デフォルトの名無しさん [sage] 2018/12/21(金) 12:36:36.76 ID:C7PBMVlX データのアラインメントはどんな言語を使うにしても気にする必要がある。 しかし、Windows が VisualC++ でビルドされていて、VisualC++ もしくは互換のアラインメントができる言語でアプリを組めば、 気にしなくてもよい、ということだけだろう。 http://mevius.5ch.net/test/read.cgi/tech/1544931495/57
58: デフォルトの名無しさん [sage] 2018/12/21(金) 14:56:12.53 ID:wVAQd9sY >>57 gcc も同じだよ。64bit版linux gccはwchar_tを16ビットにするか32ビットにするかを切り替えビルドできるからさらに厄介。 構造体を丸ごとダンプしたバイナリデータを同じOS上の別プロセスに渡すのは繊細な注意がいる。 http://mevius.5ch.net/test/read.cgi/tech/1544931495/58
59: デフォルトの名無しさん [sage] 2018/12/21(金) 16:01:10.01 ID:2iFVCAc3 で、なんだっけ?バイナリファイルのデータが 16bitで格納されていようが32bitで格納されていようが C/C++だったらアライメントを勝手に調整してくれるんだっけw へー、勝手にねー、intで扱ってれば、勝手に調整してくれるんだーw http://mevius.5ch.net/test/read.cgi/tech/1544931495/59
60: デフォルトの名無しさん [] 2018/12/21(金) 16:43:13.79 ID:wVAQd9sY intが16bitの組み込み向けプログラムであっても同じコンパイルオプションで作ったモジュール同士ならバイナリの復元はC言語の型キャストだけで可能。 構造体が仕様として公開されている場合、どの言語であれアラインメントを意識した実装が必要になるが、C言語は実装コストが最も低くなる傾向はある。 スクリプト言語を使う人がアラインメントを意識せずにすんでいるのは、ライブラリ実装した人が頑張ってくれた・くれているおかげ。 http://mevius.5ch.net/test/read.cgi/tech/1544931495/60
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 942 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.017s