質問: 0; String.format(Locale.US, "%d.%d.%d.%d", ip[0], ip[1], ip[2], ip[3])); //⇒-64.-88.0.0 ``` 意図した形 ⇒"192.168.0.0"
回答: byteは-128~127の範囲の値なので負数になることがありますね。 ip[0] のかわりに (0xff & ip[0]) とすれば期待通りの出力になりますよ。intとbyteの演算では両方がint型に合わせられて演算が行われますが&を使うことで特定のビット(0xffだと下位8ビット)だけを正数として取り出せます。