java把一个byte类型的数据的每一位都输出怎么做
发布时间:2025-05-20 04:47:15 发布人:远客网络
一、java把一个byte类型的数据的每一位都输出怎么做
1、在Java中,若要将一个byte类型的数值的每一位都输出,可以采用两种方法实现。首先,可以创建一个函数将byte转换为一个长度为8的byte数组,每个数组元素对应该数值的一位。下面是具体的代码实现:
2、public static byte[] getBooleanArray(byte b){
3、 for(int i= 7; i>= 0; i--){
4、其次,可以使用另一种方法直接将byte转为字符串形式的二进制表示,代码如下:
5、public static String byteToBit(byte b){
6、 return""+(byte)((b>> 7)& 0x1)+(byte)((b>> 6)& 0x1)+(byte)((b>> 5)& 0x1)+(byte)((b>> 4)& 0x1)+(byte)((b>> 3)& 0x1)+(byte)((b>> 2)& 0x1)+(byte)((b>> 1)& 0x1)+(byte)((b>> 0)& 0x1);
7、以上示例中,假设给定一个byte数值b,其值为0x35,即二进制形式为0011 0101。使用这两种方法分别转换后,将得到以下结果:
8、使用getBooleanArray方法输出结果为[0, 0, 1, 1, 0, 1, 0, 1]。
9、使用byteToBit方法输出结果为00110101。
10、值得注意的是,JDK自带的方法Integer.toBinaryString会忽略前面的0。例如,对0x35的转换结果为110101,与上述结果略有不同。
11、通过上述代码实现,可以方便地将byte类型的数值每一位都输出,满足具体的应用需求。
二、(java)如何获取字符串的字节数!
1、字符串是可以转变成字节数组,然后统计一下字节数组的长度即可,参考如下代码:
2、Java语言中,中文字符所占的字节数取决于字符的编码方式,一般情况下,采用ISO8859-1编码方式时,一个中文字符与一个英文字符一样只占1个字节;采用GB2312或GBK编码方式时,一个中文字符占2个字节;而采用UTF-8编码方式时,一个中文字符会占3个字节。
3、public static void main(String []args) throws UnsupportedEncodingException{
4、System.out.println("测试".getBytes("ISO8859-1").length);
5、System.out.println("测试".getBytes("GB2312").length);
6、System.out.println("测试".getBytes("GBK").length);
7、System.out.println("测试".getBytes("UTF-8").length);
三、java 里面的string 和byte[] 怎么互转
byte[] midbytes=isoString.getBytes("UTF8");
byte[] isoret= srt2.getBytes("ISO-8859-1");
String isoString= new String(bytes,"ISO-8859-1");
String srt2=new String(midbytes,"UTF-8");
在网络传输或其它应用中常常有同一的中间件,假设为String类型。因此需要把其它类型的数据转换为中间件的类型。
将字符串进行网络传输时,如socket,需要将其在转换为byte[]类型。这中间如果采用用不同的编码可能会出现未成预料的问题,如乱码。
我们用socket传输String类型的数据时,常常用UTF-8进行编码,这样比较可以避免一个“中文乱码”的问题。
byte[] sendBytes= sendString.getBytes("UTF8");
String recString=new String( sendBytes,"UTF-8");
但是,这里往往又会出现这样一个问题。就是想要发送的数据本身就是byte[]类型的。
如果将其通过UTF-8编码转换为中间件String类型就会出现问题
byte[] bytes= new byte[]{ 50, 0,-1, 28,-24};
String sendString=new String( bytes,"UTF-8");
byte[] sendBytes= sendString.getBytes("UTF8");
String recString=new String( sendBytes,"UTF-8");
byte[] Mybytes=isoString.getBytes("UTF8");
这时Mybytes中的数据将是[50, 0,-17,-65,-67, 28,-17,-65,-67]
因此,需要采用单字节的编码方式进行转换
String sendString=new String( bytes,"UTF-8");改为 String sendString=new String( bytes,"ISO-8859-1");
byte[] Mybytes=isoString.getBytes("UTF8");改为 byte[] Mybytes=isoString.getBytes("ISO-8859-1");