C#、Java有关16进制字符串和字节数组之间的转换

本文提供了一种在C#和Java中实现16进制字符串与字节数组相互转换的方法。通过提供的代码示例,读者可以了解到如何高效地进行数据格式的转换。

C#

 

ContractedBlock.gifExpandedBlockStart.gifCode
ExpandedBlockStart.gifContractedBlock.gif/**//// <summary>
        
/// 16进制字符串转字节数组
        
/// </summary>
        
/// <param name="hexString"></param>
        
/// <returns></returns>

        private static byte[] Hex2Bytes(string hex)
ExpandedBlockStart.gifContractedBlock.gif        
{
            
byte[] result = new byte[hex.Length / 2];
            
for (int i = 0; i < result.Length; i++)
                result[i] 
= Convert.ToByte(hex.Substring(i * 22), 16);
            
return result;
        }

ExpandedBlockStart.gifContractedBlock.gif        
/**//// <summary>
        
/// 字节数组转16进制字符串
        
/// </summary>
        
/// <param name="bytes"></param>
        
/// <returns></returns>

        public static string BytesToHex(byte[] bytes)
ExpandedBlockStart.gifContractedBlock.gif        
{
            StringBuilder result 
= new StringBuilder();
            
if (bytes != null)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                
for (int i = 0; i < bytes.Length; i++)
ExpandedSubBlockStart.gifContractedSubBlock.gif                
{
                    result.Append(bytes[i].ToString(
"X2"));
                }

            }

            
return result.ToString();
        }

 

Java

 

ContractedBlock.gifExpandedBlockStart.gifCode
ExpandedBlockStart.gifContractedBlock.gifprivate static final char[] bcdLookup = '0''1''2''3''4''5',
        
'6''7''8''9''a''b''c''d''e''f' }
;
ExpandedBlockStart.gifContractedBlock.gif    
/** *//**
     * 将字节数组转换为16进制字符串
     * 
@param bcd
     * 
@return
     
*/

ExpandedBlockStart.gifContractedBlock.gif    
public static final String bytesToHex(byte[] bcd) {
        StringBuffer s 
= new StringBuffer(bcd.length * 2);

ExpandedSubBlockStart.gifContractedSubBlock.gif        
for (int i = 0; i < bcd.length; i++{
            s.append(bcdLookup[(bcd[i] 
>>> 4& 0x0f]);
            s.append(bcdLookup[bcd[i] 
& 0x0f]);
        }


        
return s.toString();
    }


ExpandedBlockStart.gifContractedBlock.gif    
/** *//**
     * 将16进制字符串转换为字节数组
     * 
@param s
     * 
@return
     
*/

ExpandedBlockStart.gifContractedBlock.gif    
public static final byte[] hexToBytes(String s) {
        
byte[] bytes;
        bytes 
= new byte[s.length() / 2];

ExpandedSubBlockStart.gifContractedSubBlock.gif        
for (int i = 0; i < bytes.length; i++{
            bytes[i] 
= (byte) Integer.parseInt(s.substring(2 * i, 2 * i + 2),
                    
16);
        }


        
return bytes;
    }

 

转载于:https://www.cnblogs.com/heroking2000/archive/2009/10/17/1585112.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值