`
yaodaqing
  • 浏览: 349394 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

各种进制转换byte,hex,string

 
阅读更多

public class ByteUtils {

	/**
	 * 2进制转16进制字符串
	 * @param bytes
	 * @return
	 */
	public static String byteToHexString(byte[] bytes){
		if(bytes==null){
			return null;
		}
        StringBuffer sb = new StringBuffer();   
        for (int i = 0; i < bytes.length; i++) {   
             String strHex=Integer.toHexString(bytes[i]);   
             if(strHex.length() > 3){   
                    sb.append(strHex.substring(6));   
             } else {   
                  if(strHex.length() < 2){   
                     sb.append("0" + strHex);   
                  } else {
                     sb.append(strHex);   
                  }   
             }   
        }   
       return  sb.toString();   
   } 
	
	/**
	 * 16进制字符串转2进制
	 * @param s
	 * @return
	 */
	public static byte[] hexStringToByte(String hexString){
		if (hexString == null || hexString.equals("")) {
			return null;
		}
		hexString = hexString.toUpperCase();
		int length = hexString.length() / 2;
		char[] hexChars = hexString.toCharArray();
		byte[] d = new byte[length];
		for (int i = 0; i < length; i++) {
			int pos = i * 2;
			d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1]));
		}
		return d;
	}
	
	/**
	 * 字符转为byte
	 * @param c
	 * @return
	 */
	public static byte charToByte(char c) {
		return (byte) "0123456789ABCDEF".indexOf(c);
	}

	
	/**
	 * int to byte
	 * @param i
	 * @return
	 */
	public static byte[] intToByte(int i) { 
		byte[] bt = new byte[4]; 
		bt[0] = (byte) (0xff & i); 
		bt[1] = (byte) ((0xff00 & i) >> 8); 
		bt[2] = (byte) ((0xff0000 & i) >> 16); 
		bt[3] = (byte) ((0xff000000 & i) >> 24); 
		return bt; 
	}
	
	/**
	 * byte to int
	 * @param bytes
	 * @return
	 */
	public  static int bytesToInt(byte[] bytes) { 
		int num = bytes[0] & 0xFF; 
		num |= ((bytes[1] << 8) & 0xFF00); 
		num |= ((bytes[2] << 16) & 0xFF0000); 
		num |= ((bytes[3] << 24) & 0xFF000000); 
		return num;
	}
	
	/**  
     * 合并两个byte数组  
     * @param pByteA  合并在前
     * @param pByteB  合并在后
     * @return  
     */
    public static byte[] getMergeBytes(byte[] pByteA, byte[] pByteB){   
        int aCount = pByteA.length;   
        int bCount = pByteB.length;   
        byte[] b = new byte[aCount + bCount];   
        for(int i=0;i<aCount;i++){   
            b[i] = pByteA[i];   
        }   
        for(int i=0;i<bCount;i++){   
            b[aCount + i] = pByteB[i];   
        }   
        return b;
    } 
    
    /**  
     * 合并三个byte数组  
     * @param pByteA 合并前
     * @param pByteB 合并中
     * @param pByteC 合并后
     * @return 字节数组
     */
    public static byte[] getMergeBytes(byte[] pByteA, byte[] pByteB, byte[] pByteC){
    	
    	int aCount = pByteA.length;
    	int bCount = pByteB.length;
    	int cCount = pByteC.length;
        
    	byte[] b = new byte[aCount + bCount + cCount];   
        
        for(int i=0;i<aCount;i++){   
            b[i] = pByteA[i];   
        }   
        
        for(int i=0;i<bCount;i++){   
            b[aCount + i] = pByteB[i];   
        }
        
        for(int i=0;i<cCount;i++){   
            b[aCount + bCount + i] = pByteC[i];   
        }
        
        return b;
    }
    
    /**
     * 5个byte合并
     * @param a
     * @param b
     * @param c
     * @param d
     * @param e
     * @return
     */
    public static byte[] getMergeBytesFive(byte[] a, byte[] b , byte[] c , byte[] d , byte[] e){
    	
    	int ia = a.length;
    	int ib = b.length;
    	int ic = c.length;
    	int id = d.length;
    	int ie = e.length;

    	byte[] threeArr = new byte[ia+ib+ic];
    	threeArr = getMergeBytes(a, b, c);
    	
    	byte[] twoArr = new byte[id+ie];
    	twoArr = getMergeBytes(d, e);
    	
    	byte[] bs = new byte[ia+ib+ic+id+ie];
    	bs = getMergeBytes(threeArr, twoArr);
    	
    	return bs;
    }
    
    public static String bytesToString(byte[] bytes){
    	
    	StringBuffer sb = new StringBuffer(); 
		
    	for(int k=0; k<bytes.length; k++){
    		sb.append((char)bytes[k]);
		}
		
    	return sb.toString();
    }
    
    /**
     * char转化为byte
     * 
     * @param c
     * @return byte[]数组
     */
    public static byte[] charToByteArr(char c) {
        byte[] b = new byte[2];
        b[0] = (byte) ((c & 0xFF00) >> 8);
        b[1] = (byte) (c & 0xFF);
        return b;
    }
    
    /**
     * byte转换为char
     * 
     * @param b
     * @return
     */
    public static char byteToChar(byte[] b) {
        char c = (char) (((b[0] & 0xFF) << 8) | (b[1] & 0xFF));
        return c;
    }
}


分享到:
评论

相关推荐

    Go-此工具用于将16进制字符串转换成10进制byte数组

    本工具专注于将16进制字符串转换为10进制的byte数组,这在处理如数据库存储、加密解密、网络通信等场景中非常常见。 1. **16进制字符串与10进制byte数组的概念** - **16进制字符串**:由0-9和A-F(或a-f)字符组成...

    pb字符串转十六进制及各进制之间转换源码

    例如,从二进制转八进制,先将二进制转换为十进制,再由十进制转换为八进制。 在实际编程中,我们可能还需要考虑到溢出、负数、大整数等问题。对于大整数,PowerBuilder 9可能需要使用长整型(Long)或者自定义的...

    java String 与各种进制字符之间的转换

    通常,这样的文件会包含对各种进制转换的测试用例,以验证转换函数的正确性。 总之,理解和掌握Java中String与各种进制字符之间的转换对于日常编程至关重要。通过熟练运用上述方法,可以轻松处理与进制相关的任务,...

    java中进制转换(二进制,十进制,十六进制)及字节数组与十六进制的转换

    byte[] bytes = hexStringToByteArray(hexString); public static byte[] hexStringToByteArray(String hex) { int len = hex.length(); byte[] data = new byte[len / 2]; for (int i = 0; i ; i += 2) { data...

    String(含Hex)与Byte数组互相转换[代码]

    在Java或类似的编程语言中,我们经常会遇到需要将字符串(String)与字节数组(Byte[])以及十六进制表示的字符串(Hex)进行相互转换的情况。这些转换在处理网络通信、文件存储、加密解密等领域尤为关键。下面我们...

    C#string转byte(16进制)代码.txt

    输入string 输出byte 16进制下的转换

    java中String_十六进制String_byte[]之间相互转换

    public static byte[] hexStringToBytes(String hexString) { ByteArrayOutputStream baos = new ByteArrayOutputStream(hexString.length() / 2); for (int i = 0; i &lt; hexString.length(); i += 2) { baos....

    C#进制转换工具.zip

    这个“C#进制转换工具”可能包含了一些实用的函数、类或控制台应用程序,展示了如何在C#中优雅地处理各种进制转换。通过学习和理解这些示例,开发者可以提升在实际项目中处理进制转换问题的能力。 总结起来,C#中的...

    C#十六进制转换十六进制转换

    对于颜色代码的十六进制转换,C#中的`Color`结构体提供了从ARGB值(Alpha, Red, Green, Blue)到十六进制字符串的方法,以及反向转换。例如: ```csharp Color color = Color.FromArgb(0xFF, 0x00, 0xFF, 0x00); //...

    C#进制转换器

    3. **二进制转换**:可以使用位运算符(如`、`&gt;&gt;`、`&`、`|`等)直接操作二进制数据,或者使用`Convert.ToInt32(string, int)`或`BitConverter.ToInt32(byte[], int)`方法。 4. **十六进制转换**:C#中的字符串可以...

    PB ,PowerBuilder ,Hex blob , 16进制 blob ,互转

    标题"PB,PowerBuilder,Hex blob,16进制blob,互转"涉及到的是如何在PowerBuilder中将Blob数据转换为16进制字符串,以及反过来将16进制字符串转换回Blob数据。在处理Blob数据时,有时候我们需要将其转换成易于阅读...

    C#实现十六进制转换成浮点数

    在C#中,我们可以直接使用内置的方法将字符串形式的十六进制转换为浮点数。例如,如果有一个十六进制字符串`"3F800000"`,它代表了单精度浮点数1.0。可以使用`Single.Parse()`或`Single.TryParse()`方法,配合`...

    c#,十六进制转换成浮点数

    有时我们需要将不同格式的数据进行相互转换,例如将十六进制数字转换为浮点数。在C#中,这种转换通常涉及到字符串解析、位操作以及浮点数表示的深入理解。本文将详细解释如何实现这个过程,并探讨相关知识点。 首先...

    android字符串和16进制转换

    在这里,`String.format()`和`BigInteger`用于将字符串转换为16进制,而`Base64.getDecoder().decode()`则用于将16进制字符串解码回原始的字节数组,再转化为字符串。 在实际应用中,你可能还会遇到其他复杂情况,...

    hex2byte byte2hex

    例如,在网络通信、文件存储等场景中,经常需要将二进制数据(通常表示为`byte`数组)转换为十六进制字符串形式(即`hex`),或者相反地,将十六进制字符串转回二进制数据。这种需求催生了两个重要的函数:`hex2byte...

    c#,进制转换,二进制,十进制,十六进制转换,源码

    总的来说,C#提供了丰富的工具来处理各种进制转换,无论是简单的系统方法还是自定义的算法,都能满足开发者的需要。了解和熟练掌握这些转换方法是每个C#程序员的基本功。在实际编程中,理解并灵活运用这些知识能够...

    C# 16进制转换ASCII

    byte[] bytes = Convert.FromHexString(hexString); ``` 2. **字节数组到ASCII字符串**:有了字节数组,我们可以使用`System.Text.Encoding.ASCII.GetString`方法将其转换为ASCII字符串。 ```csharp string ascii...

    C#_string_byte数组转换解析

    在C#编程语言中,字符串(string)与字节数组(byte array)之间的...了解各种编码方式以及16进制转换可以帮助你在处理二进制数据时更加游刃有余。在实际应用中,一定要注意选择正确的编码方式,以避免数据丢失或错误。

    热血江湖数据库二进制转换十六进制c#源码

    例如,`GM_TEST1`这样的文件可能是游戏服务器上的管理测试数据,其中包含了各种游戏状态的二进制表示,使用C#进行转换可以帮助理解数据结构和内容。 总之,掌握二进制与十六进制的转换技巧是每个IT从业者,尤其是...

Global site tag (gtag.js) - Google Analytics