import java.util.Random;
/*
プログラミングのお題スレ Part15
//mevius.5ch.net/test/read.cgi/tech/1564310397/257
257 名前:デフォルトの名無しさん[sage] 投稿日:2019/09/01(日) 18:40:58.06 ID:lGQcNl0x
お題: nバイトのデータxをビット列にして出力しなさい
*/
class Ideone
{
public static void main(String[] args)
{
int n = 24;
byte[] x = generateData(n);
System.out.printf("0x%s: %s%n", toHexString(x), toBinaryString(x));
}
// nバイトのランダムなデータを作る
static byte[] generateData(int n)
{
byte[] temp = new byte[n];
new Random().nextBytes(temp);
return temp;
}
static String toBinaryString(byte[] bytes)
{
StringBuilder sb = new StringBuilder(bytes.length * 8);
for (byte b : bytes)
for (int i = 7; i >= 0; i--)
sb.append(b >>> i & 1);
return sb.toString();
}
static String toHexString(byte[] bytes)
{
StringBuilder sb = new StringBuilder(bytes.length * 2);
for (byte b : bytes)
sb.append(Integer.toHexString(b & 0xFF));
return sb.toString();
}
}
aW1wb3J0IGphdmEudXRpbC5SYW5kb207CgovKgrjg5fjg63jgrDjg6njg5/jg7PjgrDjga7jgYrpoYzjgrnjg6wgUGFydDE1IAovL21ldml1cy41Y2gubmV0L3Rlc3QvcmVhZC5jZ2kvdGVjaC8xNTY0MzEwMzk3LzI1NwoKMjU3IOWQjeWJje+8muODh+ODleOCqeODq+ODiOOBruWQjeeEoeOBl+OBleOCk1tzYWdlXSDmipXnqL/ml6XvvJoyMDE5LzA5LzAxKOaXpSkgMTg6NDA6NTguMDYgSUQ6bEdRY05sMHgK44GK6aGMOiBu44OQ44Kk44OI44Gu44OH44O844K/eOOCkuODk+ODg+ODiOWIl+OBq+OBl+OBpuWHuuWKm+OBl+OBquOBleOBhAogKi8KY2xhc3MgSWRlb25lCnsKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpCiAgICB7CiAgICAgICAgaW50IG4gPSAyNDsKICAgICAgICBieXRlW10geCA9IGdlbmVyYXRlRGF0YShuKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50ZigiMHglczogJXMlbiIsIHRvSGV4U3RyaW5nKHgpLCB0b0JpbmFyeVN0cmluZyh4KSk7CiAgICB9CiAgICAKICAgIC8vIG7jg5DjgqTjg4jjga7jg6njg7Pjg4Djg6Djgarjg4fjg7zjgr/jgpLkvZzjgosKICAgIHN0YXRpYyBieXRlW10gZ2VuZXJhdGVEYXRhKGludCBuKQogICAgewogICAgICAgIGJ5dGVbXSB0ZW1wID0gbmV3IGJ5dGVbbl07CiAgICAgICAgbmV3IFJhbmRvbSgpLm5leHRCeXRlcyh0ZW1wKTsKICAgICAgICByZXR1cm4gdGVtcDsKICAgIH0KICAgIAogICAgc3RhdGljIFN0cmluZyB0b0JpbmFyeVN0cmluZyhieXRlW10gYnl0ZXMpCiAgICB7CiAgICAgICAgU3RyaW5nQnVpbGRlciBzYiA9IG5ldyBTdHJpbmdCdWlsZGVyKGJ5dGVzLmxlbmd0aCAqIDgpOwogICAgICAgIGZvciAoYnl0ZSBiIDogYnl0ZXMpCiAgICAgICAgICAgIGZvciAoaW50IGkgPSA3OyBpID49IDA7IGktLSkKICAgICAgICAgICAgICAgIHNiLmFwcGVuZChiID4+PiBpICYgMSk7CiAgICAgICAgcmV0dXJuIHNiLnRvU3RyaW5nKCk7CiAgICB9CiAgICAKICAgIHN0YXRpYyBTdHJpbmcgdG9IZXhTdHJpbmcoYnl0ZVtdIGJ5dGVzKQogICAgewogICAgICAgIFN0cmluZ0J1aWxkZXIgc2IgPSBuZXcgU3RyaW5nQnVpbGRlcihieXRlcy5sZW5ndGggKiAyKTsKICAgICAgICBmb3IgKGJ5dGUgYiA6IGJ5dGVzKQogICAgICAgICAgICBzYi5hcHBlbmQoSW50ZWdlci50b0hleFN0cmluZyhiICYgMHhGRikpOwogICAgICAgIHJldHVybiBzYi50b1N0cmluZygpOwogICAgfQp9Cg==