タグ

byte orderに関するyassのブックマーク (2)

  • バイナリデータとテキストデータ:プログラマー社長のブログ:オルタナティブ・ブログ

    このところ受託開発の仕事のプログラミングの納期間近ということで、私も手伝って慌ただしくプログラミングをしているのですが、そのシステムでは通信データの形式にバイナリ形式を使っています。バイナリ形式とテキスト形式の違いをあらためてプログラマー視点で書いてみましょう。 バイナリ形式とはCPUがそのまま値として扱える状態のことで、例えば数値データとして一般的に使われている32ビット整数や、64ビット浮動小数点などがあります。C言語では、char,short,long,float,doubleなどの型が使われます。32ビットコンパイラならintはlongと同等ですね。 一方、テキスト形式は、人間がそのまま読める形式で、一般的にはアスキー形式とも呼ばれますが、ASCII文字を使用し、数値も「1.234」という感じに文字列で表現します。 昔はフロッピーディスクなどの記憶媒体の容量が少なかったため、少ない

    バイナリデータとテキストデータ:プログラマー社長のブログ:オルタナティブ・ブログ
    yass
    yass 2013/08/25
    " 昔はフロッピーディスクなどの記憶媒体の容量が少なかったため、少ない容量で多くのデータを保持できるバイナリ形式が多用 / メモリー使用可能容量がさらに少なかったので、バイナリー形式が好まれた "
  • 多くのMurmurHashの実装がバイトオーダーを考慮していない - WebService::Blog->new( user => ’hide_o_55’ )

    (注)dataの型はunsigned char*です。 全部見た訳じゃないですが、https://code.google.com/p/smhasher/をはじめとするMurmurHashの実装は、x86/x86_64等、リトルエンディアン環境を前提とした実装となっており*1、SPARCやPowerPCといったビッグエンディアン環境では同じキーのハッシュ値が違うものになってしまいます。 よって、バイトオーダーの異なる環境間でのやり取りにMurmurHashを使用すると問題が発生する可能性があります。必要であれば、ビッグエンディアン環境ではバイトオーダーを並べ替えるパッチをあてる等の対策を取りましょう。 *1:関数名が_x86となってるので当然と言えば当然

    多くのMurmurHashの実装がバイトオーダーを考慮していない - WebService::Blog->new( user => ’hide_o_55’ )
  • 1