- - PR -
byte配列にint型変数を変換して16進数で格納する方法
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2009-02-09 12:34
byte b = (byte) 0xFF;
上記のようなbyteプリミティブ変数にint型を 16進数で格納したいです。 int i= 255 b = (byte) ?; ?の部分が知りたいです。 基本的なことですいませんが、よろしくお願いします。 |
|
投稿日時: 2009-02-09 12:41
8進数・10進数・16進数の何れかで値を設定しても内部保持は10進数(あるいは2進数)に変換されます。
System.out.println(0xFF)など実行すればすぐわかると思いますが。 |
|
投稿日時: 2009-02-09 12:58
プリミティブ型をオブジェクト操作する場合、
対応するクラスを使用します。 intの場合はIntegerクラスについて調べてみてください。 |
|
投稿日時: 2009-02-09 13:06
>朝日奈 ありすさん
返答ありがとうございます。 下記@のメソッドの動きがいまいちわからなくて、 直接的ではないのですが、質問しました。 @Byte.valueOf(String s, int radix) →第一引数の数値を基数(16進数)にしてbyte型として返却 と思っていました。だからAやBみたいなこともできると 思って試していたところです。 byte b = Byte.valueOf(Integer.toHexString(i),16); byte b = Byte.valueOf(Integer.toString(i),16); Byte.valueOf("255",16); →これでNumberFormatExceptionなんですね。 |
|
投稿日時: 2009-02-09 13:25
>byte b = (byte) 0xFF;
これで入るのは単なる-1という数字です。 System.out.println(b); で確認してください。 16進数というのは、ソース上だけの話です。 |
|
投稿日時: 2009-02-09 13:37
勘違いしてました、すみません。
byte b = new Integer(0xFF).byteValue(); とかやりたいのかと思ってました。 # これも byte b = (byte)0xFF; でいいし。 [ メッセージ編集済み 編集者: デューン 編集日時 2009-02-09 13:46 ] |
|
投稿日時: 2009-02-09 16:25
>上記のようなbyteプリミティブ変数にint型を
>16進数で格納したいです。 誤解がありませんか? 何進数で表現するか、というのは人間の都合です。 出力時に指定すればいいのであって、格納時にはどうでもいいことです。 >byte b = Byte.valueOf(Integer.toHexString(i),16); >byte b = Byte.valueOf(Integer.toString(i),16); byte型というのは、「1バイトで表現できる範囲の数値を格納する」ための変数です。 16進数表記なんぞ全然関係ないですよ。 >Byte.valueOf("255",16); >→これでNumberFormatExceptionなんですね。 byte型に格納できる値の範囲を確認しましょう。 <追記> それと、「二の補数」についても調べてみましょう。 [ メッセージ編集済み 編集者: Edosson 編集日時 2009-02-09 16:43 ] |
|
投稿日時: 2009-02-09 16:52
ところで、スレッドタイトルにある「byte配列」と質問との関係は?
|