vine-users ML アーカイブ



[vine-users:057702] Re: HP-UX とのバイナリデータ のやりとり

  • From: MVA <mva@xxxxxxxxxxxxxx>
  • Subject: [vine-users:057702] Re: HP-UX とのバイナリデータ のやりとり
  • Date: Fri, 17 Jan 2003 23:11:42 +0900
こんばんは。MVAです。

すでにHP-UXは手元にないので、記憶のみで書いていることをご容赦
願います。

Yasumichi Akahoshi wrote:
>>ビッグエンディアン,リトルエンディアンの違いによる
>>バイトオーダの問題かと考え,
>>データをバイト単位でスワップさせてみたのですが
>>うまくいきませんでした。
> 
>     *  UNIXという考え方  (株式会社オーム社)
>           o 判型: A5 判 168 ページ
>           o Mike Gancarz 著, 芳尾桂 監訳
>           o 2001 年 2 月 23 日 初版発行
>           o 本体価格 1,600 円 (ISBN 4-274-06406-9)
> 
>  上記の本では、こういう場合はUNIXの流儀では、ASCII形式で扱うべきだと書
> いてありました。これが、正しいかは分かりませんが、個人的にはデータの移植
> 性が高いと思います。(サイズは大きくなるでしょうが。)
> 
>  単純にバイトオーダの問題といってもint,floatなどのデータサイズの違いも
> 有るかも知れませんし、アーキテクチャによって構造体の占めるサイズが変わる
> ということも有ります。(HP-UXについては、詳しく知りませんが。)

HP-UX 8.0 では、CPUによって同じ構造体でもサイズが変わることが
ありえたはずです。たしか double型(8バイト)で、MC680x0 では
4バイト単位、HP-PA(PA-RISC)では8バイト単位で内部的にそろえら
れていたかと。

単純にint型ならどちらも4バイト(32ビット)かつ、2の補数表現な
ので、バイトオーダ程度で済むはずです。実際にMS-DOSとバイナリ
データをやりとりしていましたし。

>  おそらく、よっぽど古いマシンか大量のデータでなければ、テキストデータを
> 扱う事によるパフォーマンスの低下は、大きな問題にならないような気がします
> (単なる思い込みかも知れませんが。)

# HP-UX 8.0 ということは、「よっぽど古いマシン」の部類に入る
# んじゃないかと思いますが。おそらくは、10年以上前。
# 私が使っていたのは、MC68040 の25MHzくらいだったかな。

ちなみに、私が昔かかわっていたCADでは、テキストだとデータサ
イズと精度がトレードオフになってしまうため、なんとかバイナリ
でやりとりしていました。大きなデータだとフロッピーディスク1
枚に納まらなくなってしまうので… このへんは、ケースバイケー
スですね。
-- 
MVA