Xref: jaist-news fj.questions.unix:1714 fj.lang.c:1119 Path: jaist-news!cs.titech!nirvana.cs.titech!wnoc-tyo-news!news.u-tokyo.ac.jp!news.tisn.ad.jp!is.s.u-tokyo!s.u-tokyo!kuis!kuis-news!tsuru From: tsuru@cr.scphys.kyoto-u.ac.jp (Takeshi Go Tsuru) Newsgroups: fj.questions.unix,fj.lang.c Subject: Re: Byte Order Followup-To: fj.lang.c Date: 8 Jan 1994 09:23:24 GMT Organization: Dept. of Information Science, Kyoto University, JAPAN Lines: 52 Distribution: fj Message-ID: <2glu2c$2cv@hemp.imel.kyoto-u.ac.jp> References: <2gilvv$1rt@hemp.imel.kyoto-u.ac.jp> <2gjdio$8ju@hemp.imel.kyoto-u.ac.jp> NNTP-Posting-Host: seiryu.scphys.kyoto-u.ac.jp X-Newsreader: mnews [version 1.16PL4] 鶴 剛@京大物理CRです。 これって、ほとんど fj.lang.c ネタに見えるので、 Newsgroups: fj.questions.unix,fj.lang.c Followup-To: fj.lang.c にします。よろしいですね? >> 最近 Alpha (OSF/1)もいじっている牧野@東大駒場です。 お久しぶりです。どうもです。グレープさんは元気ですか? # そちらのボスさんと小ボスさんにはこないだお会いしました。 >> これって8バイトrealはどうするのかしら? DEC FORTRAN は -convert >> big_endian なるオプションがあって I/O だけバイトオーダーを変えてくれる >> ようですが、 C にはこんなオプションはないのね。 げっ、、、このオプションは便利に見えるけど、Cにあったらむしろ混乱の元で、 無い方が良いように思いますけど。Fortranはビット演算とか得意じゃないから、 必要なんでしょうね。まぁ、Fortranは使(いたく/わ)ないので、関係無いですが。 >> >またその場合、IEEEフォーマットとそのアーキテキチャーでの >> >表現の間の変換はどうすれば良いのでしょうか? >> 今時の普通のWSなら、 IEEE-754 でない内部表現を使っているものはほとんど >> ないのでは?そうでないもの 今、適当な数 (float で 9.876543e+21)を Sun(SPARC & gcc)、 Ultrix(R3000 & gcc)、OSF1/AXP (Alpha, gcc)、OS9/VME (MC68040 & gcc)で 調べたところ、全部 0x6405da24 で同じになったので、 「きっと」共通なのでしょう。だからといって、IEEE標準かは知りませんが… 良かった良かった。。。 #でも、一応誰か正確なところをフォローして下さい。 因みに、float を直接 htonl() や ntohl() にブチコムと怒られますが、 float f_net; /* sizeof(float) == 4 */ *(unsigned int *)(&f_net) = htonl( *(unsigned int *)(&f_host)); とすれば、問題なく変換できます。 # それにしても Sun, Ultrix, OSF1/AXP, OS9/VME で共通のプログラムを 書くと言うのは…面倒です。。。 long 以外はどれもバイトサイズが同じなのでまだましか。。。 これに MS-DOS/80X86が加わった日には… $ 実はまだ幾つか質問が待っています。乞う御期待。。。 -- TGT@CR == Takeshi Go Tsuru: Cosmic Ray Group, Dept. of Physics, Kyoto Univ. Address: Kitashirakawa-Oiwake-Cho, Sakyo, Kyoto 606-01, Japan e-mail : tsuru@cr.scphys.kyoto-u.ac.jp TEL : JAPAN(81)-75-753-3843 (Voice, Direct), JAPAN(81)-75-701-5377 (FAX)