Java 负数表示?如何将10进制转换为16进制,2进制?使用ByteBuffer将double、short、int存入Byte[]
2023-12-14 01:16:45
Java 的负数表示,第一位为负数,其他取反码
- -7可以表示为10000111,最高位的1代表负号,它的反码是除去符号位各位取反为11111000
- 对应的将各种进制转换为byte,起始底层二进制都不影响
- (byte)255 00000001
- (byte)0x80 11111111
- (byte) 128 10000000
- (byte)-128 10000000
- -128 10111111
byte[] b = new byte[]{(byte)0x01,-1,(byte)255,(byte)0x80,(byte) 128,-128};
System.out.println(Arrays.toString(b));
System.out.println(Integer.toBinaryString((byte) 0x01));
// -7可以表示为10000111,最高位的1代表负号,它的反码是除去符号位各位取反为11111000
// java的负数二进制表示
//(byte)0x01 (byte)255 (byte)0x80 (byte) 128 -128
// 00000001 11111111 10000000 10000000 10111111
// [1, -1, -128, -128, -128 ]
10进制转换为16进制,2进制
byte b = -1;
System.out.println("16进制:" + String.format("%02x ", b) ); // 10进制转换为16进制 %02x 是一个格式化字符串,用于将一个整数以十六进制格式输出,并在结果的前面补0,直到结果长度为2。
System.out.println("二进制:"+ Integer.toBinaryString(b)); // 10进制转换为2进制
使用ByteBuffer将double、short、int存入Byte[]
-
打印byte[] 时,Java里默认使用二进制表示
- 构造一个byte[]数组,存入short(2byte)、int(4byte)、double(8byte)
- 16进制,2进制,十进制的转换
short intNumber = 99; byte[] b1 = ByteBuffer.allocate(2).putShort(intNumber).array(); byte[] doubleByte = ByteBuffer.allocate(8).putDouble(9.99).array(); byte[] byteArray = new byte[15]; byteArray[0] = (byte) 0x01; byteArray[1] = (byte) 255; byteArray[2] = (byte) 0x80; byteArray[3] = (byte) 128; byteArray[4] = (byte) -128; // 存入short的byte byteArray[5] = b1[0]; // 或者 (byte) ((intNumber >> 8) & 0xFF) 这就是取short的第一个字节 byteArray[6] = b1[1]; // 或者 (byte) (intNumber & 0xFF) 取short的第二个字节 // 存入double的byte byteArray[7] = doubleByte[0]; byteArray[8] = doubleByte[1]; byteArray[9] = doubleByte[2]; byteArray[10] = doubleByte[3]; byteArray[11] = doubleByte[4]; byteArray[12] = doubleByte[5]; byteArray[13] = doubleByte[6]; byteArray[14] = doubleByte[7]; System.out.println(Arrays.toString(byteArray)); for (byte b : byteArray) { System.out.println("========================="); System.out.println("默认输出十进制 byte: " + b ); System.out.println("16进制:" + String.format("%02x ", b) ); // 10进制转换为16进制 %02x 是一个格式化字符串,用于将一个整数以十六进制格式输出,并在结果的前面补0,直到结果长度为2。 System.out.println("二进制:"+ Integer.toBinaryString(b)); // 10进制转换为2进制 }
[1, -1, -128, -128, -128, 0, 99, 64, 35, -6, -31, 71, -82, 20, 123] ========================= 默认输出十进制 byte: 1 16进制:01 二进制:1 ========================= 默认输出十进制 byte: -1 16进制:ff 二进制:11111111111111111111111111111111 ========================= 默认输出十进制 byte: -128 16进制:80 二进制:11111111111111111111111110000000 ========================= 默认输出十进制 byte: -128 16进制:80 二进制:11111111111111111111111110000000 ========================= 默认输出十进制 byte: -128 16进制:80 二进制:11111111111111111111111110000000 ========================= 默认输出十进制 byte: 0 16进制:00 二进制:0 ========================= 默认输出十进制 byte: 99 16进制:63 二进制:1100011 ========================= 默认输出十进制 byte: 64 16进制:40 二进制:1000000 ========================= 默认输出十进制 byte: 35 16进制:23 二进制:100011 ========================= 默认输出十进制 byte: -6 16进制:fa 二进制:11111111111111111111111111111010 ========================= 默认输出十进制 byte: -31 16进制:e1 二进制:11111111111111111111111111100001 ========================= 默认输出十进制 byte: 71 16进制:47 二进制:1000111 ========================= 默认输出十进制 byte: -82 16进制:ae 二进制:11111111111111111111111110101110 ========================= 默认输出十进制 byte: 20 16进制:14 二进制:10100 ========================= 默认输出十进制 byte: 123 16进制:7b 二进制:1111011
文章来源:https://blog.csdn.net/weixin_44481011/article/details/134896139
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!