编码格式转换

容器复制
pApp->m_listdata.assign(m_VecXmlnodes.begin(), m_VecXmlnodes.end());
	
	/*vector<CMainApp::XmlElement >::iterator it;
	for(it = m_VecXmlnodes.begin();it != m_VecXmlnodes.end();++it)
	{	
		pApp->m_lstcase.AddTail(*it);
	}*/
	
	//AfxMessageBox(strCasename);
http://www.mytju.com/classcode/tools/encode_gb2312.asp
//void  intToByte(int i,byte *bytes,int size = 4)
//{
//	//byte[] bytes = new byte[4];
//	memset(bytes,0,sizeof(byte) *  size);
//	bytes[0] = (byte) (0xff & i);
//	bytes[1] = (byte) ((0xff00 & i) >> 8);
//	bytes[2] = (byte) ((0xff0000 & i) >> 16);
//	bytes[3] = (byte) ((0xff000000 & i) >> 24);
//	return ;
//}

1 /**
 2      * int转byte[]
 3      * 该方法将一个int类型的数据转换为byte[]形式,因为int为32bit,而byte为8bit所以在进行类型转换时,知会获取低8位,
 4      * 丢弃高24位。通过位移的方式,将32bit的数据转换成4个8bit的数据。注意 &0xff,在这当中,&0xff简单理解为一把剪刀,
 5      * 将想要获取的8位数据截取出来。
 6      * @param i 一个int数字
 7      * @return byte[]
 8      */
 9     public static byte[] int2ByteArray(int i){
10         byte[] result=new byte[4];
11         result[0]=(byte)((i >> 24)& 0xFF);
12         result[1]=(byte)((i >> 16)& 0xFF);
13         result[2]=(byte)((i >> 8)& 0xFF);
14         result[3]=(byte)(i & 0xFF);
15         return result;
16     }
17     /**
18      * byte[]转int
19      * 利用int2ByteArray方法,将一个int转为byte[],但在解析时,需要将数据还原。同样使用移位的方式,将适当的位数进行还原,
20      * 0xFF为16进制的数据,所以在其后每加上一位,就相当于二进制加上4位。同时,使用|=号拼接数据,将其还原成最终的int数据
21      * @param bytes byte类型数组
22      * @return int数字
23      */
24     public static int bytes2Int(byte[] bytes){
25         int num=bytes[3] & 0xFF;
26         num |=((bytes[2] <<8)& 0xFF00);
27         num |=((bytes[1] <<16)& 0xFF0000);
28         num |=((bytes[0] <<24)& 0xFF0000);
29         return num;
30     }





1.	
2.	
3.	 /** 中文字符串转UTF-8与GBK码示例   
4.	             */  
5.	         public static void tttt() throws Exception {  
6.	        String old = "手机银行";  
7.	          
8.	        //中文转换成UTF-8编码(16进制字符串)  
9.	        StringBuffer utf8Str = new StringBuffer();  
10.	        byte[] utf8Decode = old.getBytes("utf-8");  
11.	        for (byte b : utf8Decode) {  
12.	            utf8Str.append(Integer.toHexString(b & 0xFF));  
13.	        }  
14.	//      utf8Str.toString()=====e6898be69cbae993b6e8a18c  
15.	//      System.out.println("UTF-8字符串e6898be69cbae993b6e8a18c转换成中文值======" + new String(utf8Decode, "utf-8"));//-------手机银行  
16.	          
17.	          
18.	        //中文转换成GBK码(16进制字符串)  
19.	        StringBuffer gbkStr = new StringBuffer();  
20.	        byte[] gbkDecode = old.getBytes("gbk");  
21.	        for (byte b : gbkDecode) {  
22.	            gbkStr.append(Integer.toHexString(b & 0xFF));  
23.	        }  
24.	//      gbkStr.toString()=====cad6bbfad2f8d0d0  
25.	//      System.out.println("GBK字符串cad6bbfad2f8d0d0转换成中文值======" + new String(gbkDecode, "gbk"));//----------手机银行  
26.	          
27.	          
28.	        //16进制字符串转换成中文  
29.	        byte[] bb = HexString2Bytes(gbkStr.toString());  
30.	        bb = HexString2Bytes("CAD6BBFAD2F8D0D0000000000000000000000000");  
31.	        byte[] cc = hexToByte("CAD6BBFAD2F8D0D0000000000000000000000000", 20);  
32.	        String aa = new String(bb, "gbk");  
33.	        System.out.println("aa====" + aa);  
34.	    }  

 
[html]  view plain copy
1.	/**  
2.	 * 把16进制字符串转换成字节数组  
3.	 * @param hexstr  
4.	 * @return  
5.	 */  
6.	public static byte[] HexString2Bytes(String hexstr) {  
7.	    byte[] b = new byte[hexstr.length() / 2];  
8.	    int j = 0;  
9.	    for (int i = 0; i < b.length; i++) {  
10.	        char c0 = hexstr.charAt(j++);  
11.	        char c1 = hexstr.charAt(j++);  
12.	        b[i] = (byte) ((parse(c0) << 4) | parse(c1));  
13.	    }  
14.	    return b;  
15.	}  
16.	  
17.	private static int parse(char c) {  
18.	    if (c >= 'a')  
19.	        return (c - 'a' + 10) & 0x0f;  
20.	    if (c >= 'A')  
21.	        return (c - 'A' + 10) & 0x0f;  
22.	    return (c - '0') & 0x0f;  
23.	}  

 
[html]  view plain copy
1.	/**  
2.	 * 把字节数组转换成16进制字符串  
3.	 * @param bArray  
4.	 * @return  
5.	 */  
6.	public static final String bytesToHexString(byte[] bArray) {  
7.	    StringBuffer sb = new StringBuffer(bArray.length);  
8.	    String sTemp;  
9.	    for (int i = 0; i < bArray.length; i++) {  
10.	     sTemp = Integer.toHexString(0xFF & bArray[i]);  
11.	     if (sTemp.length() < 2)  
12.	      sb.append(0);  
13.	     sb.append(sTemp.toUpperCase());  
14.	    }  
15.	    return sb.toString();  
16.	}  
//
           
         /** 中文字符串转UTF-8与GBK码示例 
             */
         public static void tttt() throws Exception {
		String old = "手机银行";
		
		//中文转换成UTF-8编码(16进制字符串)
		StringBuffer utf8Str = new StringBuffer();
		byte[] utf8Decode = old.getBytes("utf-8");
		for (byte b : utf8Decode) {
			utf8Str.append(Integer.toHexString(b & 0xFF));
		}
//		utf8Str.toString()=====e6898be69cbae993b6e8a18c
//		System.out.println("UTF-8字符串e6898be69cbae993b6e8a18c转换成中文值======" + new String(utf8Decode, "utf-8"));//-------手机银行
		
		
		//中文转换成GBK码(16进制字符串)
		StringBuffer gbkStr = new StringBuffer();
		byte[] gbkDecode = old.getBytes("gbk");
		for (byte b : gbkDecode) {
			gbkStr.append(Integer.toHexString(b & 0xFF));
		}
//		gbkStr.toString()=====cad6bbfad2f8d0d0
//		System.out.println("GBK字符串cad6bbfad2f8d0d0转换成中文值======" + new String(gbkDecode, "gbk"));//----------手机银行
		
		
		//16进制字符串转换成中文
		byte[] bb = HexString2Bytes(gbkStr.toString());
		bb = HexString2Bytes("CAD6BBFAD2F8D0D0000000000000000000000000");
		byte[] cc = hexToByte("CAD6BBFAD2F8D0D0000000000000000000000000", 20);
		String aa = new String(bb, "gbk");
		System.out.println("aa====" + aa);
}

	/**
	 * 把16进制字符串转换成字节数组
	 * @param hexstr
	 * @return
	 */
	public static byte[] HexString2Bytes(String hexstr) {
		byte[] b = new byte[hexstr.length() / 2];
		int j = 0;
		for (int i = 0; i < b.length; i++) {
			char c0 = hexstr.charAt(j++);
			char c1 = hexstr.charAt(j++);
			b[i] = (byte) ((parse(c0) << 4) | parse(c1));
		}
		return b;
	}
	private static int parse(char c) {
		if (c >= 'a')
			return (c - 'a' + 10) & 0x0f;
		if (c >= 'A')
			return (c - 'A' + 10) & 0x0f;
		return (c - '0') & 0x0f;
	}

	/**
	 * 把字节数组转换成16进制字符串
	 * @param bArray
	 * @return
	 */
	public static final String bytesToHexString(byte[] bArray) {
	    StringBuffer sb = new StringBuffer(bArray.length);
	    String sTemp;
	    for (int i = 0; i < bArray.length; i++) {
	     sTemp = Integer.toHexString(0xFF & bArray[i]);
	     if (sTemp.length() < 2)
	      sb.append(0);
	     sb.append(sTemp.toUpperCase());
	    }
	    return sb.toString();
	}











		function ByteToHex(Src: Byte): String;
				var
					h, l : Byte;
				const
			HC : Array [$00..$0F] of char = ('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');
				begin
			h :=Src shr 4;
			l :=Src shl 4;
			l :=l shr 4;
			Result :=HC[h]+HC[l];
				end;
				function StrToHex(str : String):String; //字符串转换为2位16进制字符串
				var
			i : Integer;
				begin
			Result :='';
				for i :=1 to Length(str) do
				begin
			Result :=Result +Right('00'+ByteToHex(Ord(str[i])),2);
				end;
				end;

				//

				ShowMessage(StrToHex('林'));
				function Right(const src: string; const numChars: Integer): string;
				var
					m, n: Integer;
				begin
			n := Length(src);
				if numChars > n then
			m := 1
				else begin
			m := n - numChars + 1;
			n := numChars;
				end;
			Result := Copy(src, m, n);
				end;
				
			StrToHex('abc林aad1166aa');

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值