[過去ログ]
文字コード総合スレ Part12 (1002レス)
文字コード総合スレ Part12 http://mevius.5ch.net/test/read.cgi/tech/1544931495/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
24: デフォルトの名無しさん [sage] 2018/12/19(水) 12:49:47.13 ID:JIdS0sYR エンディアン嘘つかない http://mevius.5ch.net/test/read.cgi/tech/1544931495/24
25: デフォルトの名無しさん [] 2018/12/19(水) 16:46:27.07 ID:R6d6JT/9 >>23 バイトオーダーを意識する機会が減ったのは、xmlやjsonなどテキスト形式でデータ受け渡しすることが多くなったから。 テキスト形式ならバイトオーダーを意識せずに済むし、スクリプト言語で扱うのにも便利。 http://mevius.5ch.net/test/read.cgi/tech/1544931495/25
26: デフォルトの名無しさん [sage] 2018/12/19(水) 20:30:33.10 ID:gznchIbF いやいや、テキストでもUTF16とかUTF32ならめっちゃ意識するやん。 http://mevius.5ch.net/test/read.cgi/tech/1544931495/26
27: ◆QZaw55cn4c [sage] 2018/12/19(水) 20:51:34.30 ID:C9bIO99C >>24 豆知識、endian とは? もともとは、卵を丸い方の端 (big end) から割る人々(Big Endians)と尖った方の端から割る人々 (Little Endians) との対立を表したものだった http://mevius.5ch.net/test/read.cgi/tech/1544931495/27
28: デフォルトの名無しさん [sage] 2018/12/20(木) 01:35:41.75 ID:jYg2YnYV そういえばハンプティダンプティの絵文字がない http://mevius.5ch.net/test/read.cgi/tech/1544931495/28
29: デフォルトの名無しさん [sage] 2018/12/20(木) 03:36:13.08 ID:Epiz8Tj2 バイトオーダーやアラインメントは、C/C++以外の言語でバイナリデータを使おうとした時に強く意識することになる。 C/C++で開発している時はコンパイラが自動的に配置・取得してくれるデータを、スクリプト言語では自力でオフセット調整して配置・取得しなければならない。 C/C++より簡単なことが長所だったはずのC#・Java・Perl・Python言語などで、低レベルなオフセット調節を自力で行う必要に迫られる皮肉な状況が起きる。 http://mevius.5ch.net/test/read.cgi/tech/1544931495/29
30: デフォルトの名無しさん [sage] 2018/12/20(木) 04:20:27.30 ID:ojhJ7lIE > バイトオーダーやアラインメントは、C/C++以外の言語でバイナリデータを使おうとした時に強く意識することになる。 C/C++言語以外ではライブラリが処理してしまうんで意識しないかな C/C++ライブラリを呼び出すライブラリを作るときは意識するだろうけど、 それって結局C/C++言語で書くんで、あれ?意識するのはC/C++かw http://mevius.5ch.net/test/read.cgi/tech/1544931495/30
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://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
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 954 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.011s