• 締切済み

数値からバイト配列への変換について

すみません。JAVA初心者で困ってます。 double型の数値からバイト配列に変換するにはどうしたらよいですか。 ちなみにJAVAのAPIを見ながら考えていますが、 public class Double2Byte { private double m_double; private byte m_byte; private String strByte; private byte[] m_byteArray; public Double2Byte(double a_double) { m_double = a_double; } public void double2Byte(){ m_byte = (byte) m_double; } public void changeByte(){ strByte = Double.toString(m_double); } public void getByte(){ m_byteArray = strByte.getBytes(); } public static void main(String args[]){ Double2Byte d2b = new Double2Byte(1.23456789); d2b.double2Byte(); d2b.changeByte(); d2b.getByte(); System.out.println(d2b.m_byteArray); } } こんな感じになるのかなと考えています。 ご指導のほど、お願いいたします。

みんなの回答

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.3

#2のHKBさんのあげたURLにあるプログラムだと 質問者さんの求めるものとは微妙に違うような気がするのですが 解決したのでしょうか? Cなら簡単なのにと思いつつこんな感じになりました。 import java.lang.*; import java.io.*; public class Conv { public static void main(String[] args) throws IOException { PipedOutputStream po = new PipedOutputStream(); PipedInputStream pi = new PipedInputStream(po); DataOutputStream dataOut = new DataOutputStream(po); double dVar = 3.14; //po.write(1); dataOut.writeDouble(0.0); dataOut.writeDouble(1.0); dataOut.writeDouble(2.0); dataOut.writeDouble(3.5); dataOut.writeDouble(-1.0); dataOut.writeDouble(-4.0); dataOut.close(); byte[] buffer = new byte[8]; while (true) { int len = pi.read(buffer, 0, buffer.length); if(len != buffer.length) { System.out.println("moge: " + len); //System.exit(1); break; } System.out.write(buffer, 0, len); } pi.close(); } } 標準出力にバイナリででてきますので ファイルにリダイレクトして十六進ダンプすると こんな感じです 00000000: 00 00 00 00 00 00 00 00 3F F0 00 00 00 00 00 00 00000010: 40 00 00 00 00 00 00 00 40 0C 00 00 00 00 00 00 00000020: BF F0 00 00 00 00 00 00 C0 10 00 00 00 00 00 00 00000030: 6D 6F 67 65 3A 20 2D 31 0D 0A それっぽいデータだと思います。 doubleのビットパターンをlongに取得して ビットシフトとbitwise and でバイトごとに取り出す という手もあると思いますが それは割愛します。 #Double.doubleToLogBits

noname#119918
noname#119918
回答No.2

参考URLの下部に掲載されているコードでどうでしょうか。 実行してみたところ、 私の環境では正しい答えが得られているように思いました。

参考URL:
http://www.nextindex.net/java/binary.html
FCTOKYO
質問者

お礼

返答ありがとうございます。 HKBさんの紹介してくれた「参考URL」を見て自分なりに勉強したいと思います。

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

欲しいのは具体的にどんなものですか? 任意のdouble の数値データを表す IEEE 754フォーマットでのビットパターンを 格納しているバイト配列ですか?

FCTOKYO
質問者

補足

返答が遅くなって申し訳ありませんでした。 >任意のdouble の数値データを表す >IEEE 754フォーマットでのビットパターンを >格納しているバイト配列ですか? はい、そうです。

関連するQ&A

専門家に質問してみよう