アプリ版:「スタンプのみでお礼する」機能のリリースについて

(1)
Short.valueOf("10")をByte[2]に変換したいのですが、ShortにはByteへ変換するメソッドがあるもののByte[2]へ変換するメソッドがありません。Byte[2]へ変換する方法を教えてください。

(2)
Shortは2バイトのはずなので1バイトに変換するメソッドが存在する意味がわかりません。なぜでしょうか。

A 回答 (2件)

short型の10をByte[2]に変換するとして、どういう結果をお望みですか?


(A) 1バイト目が0、2バイト目が10 (ビッグエンディアン)
(B) 1バイト目が10、2バイト目が0 (リトルエンディアン)
(C) 1バイト目が49、2バイト目が48
(D) その他
また、10じゃなくて-10000だったら?

Byte[]かbyte[]かという部分を無視すればNo.1さんの回答にあるString.getBytes()は(C)の発想ですが、shortの値が100以上とか-10以下だったらByte[2]に入りませんね。
    • good
    • 0

1)プリミティブ型のByteじゃなければ簡単に変換できますが、わざわざプリミティブ型を使う理由があるのでしょうか?



byte[] by = "10".getBytes();

2)さーなんででしょーかね。プリミティブ型には大体byteValueのメソッドがありますね。
とりあえず(-128,127)までなら正しく変換されますけど、その値を超えると丸めたり切り捨てられるっぽいですね。
System.out.println(Short.valueOf("128").byteValue());
を実行すると-128になるので2の補数で計算してるようですね。(まぁ、あたりまえか)
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!