public static String toHexString(int i)以十六进制的无符号整数形式返回一个整数参数的字符串表示形式。
如果参数为负,那么无符号整数值为参数加上 232;否则等于该参数。将该值转换为十六进制(基数 16)的无前导 0 的 ASCII 数字字符串。如果无符号数的大小值为零,则用一个零字符 '0' (’\u0030’) 表示它;否则,无符号数大小的表示形式中的第一个字符将不是零字符。用以下字符作为十六进制数字:
0123456789abcdef
这些字符的范围是从 '\u0030' 到 '\u0039' 和从 '\u0061' 到 '\u0066'。如果希望得到大写字母,可以在结果上调用 String.toUpperCase() 方法:
Integer.toHexString(n).toUpperCase()
参数:
i - 要转换成字符串的整数。
返回:
用十六进制(基数 16)参数表示的无符号整数值的字符串表示形式。
// 转化字符串为十六进制编码
public static String toHexString(String s)
{
String str="";
for (int i=0;i<s.length();i++)
{
int ch = (int)s.charAt(i);
String s4 = Integer.toHexString(ch);
str = str + s4;
}
return str;
}
// 转化十六进制编码为字符串
public static String toStringHex(String s)
{
byte[] baKeyword = new byte[s.length()/2];
for(int i = 0; i < baKeyword.length; i++)
{
try
{
baKeyword[i] = (byte)(0xff & Integer.parseInt(s.substring(i*2, i*2+2),16));
}
catch(Exception e)
{
e.printStackTrace();
}
}
try
{
s = new String(baKeyword, "utf-8");//UTF-16le:Not
}
catch (Exception e1)
{
e1.printStackTrace();
}
return s;
}
// 转化十六进制编码为字符串
public static String toStringHex(String s)
{
byte[] baKeyword = new byte[s.length()/2];
for(int i = 0; i < baKeyword.length; i++)
{
try
{
baKeyword[i] = (byte)(0xff & Integer.parseInt(s.substring(i*2, i*2+2),16));
}
catch(Exception e)
{
e.printStackTrace();
}
}
try
{
s = new String(baKeyword, "utf-8");//UTF-16le:Not
}
catch (Exception e1)
{
e1.printStackTrace();
}
return s;
}
public static void main(String[] args) {
System.out.println(encode("中文"));
System.out.println(decode(encode("中文")));
}
/*
* 16进制数字字符集
*/
private static String hexString="0123456789ABCDEF";
/*
* 将字符串编码成16进制数字,适用于所有字符(包括中文)
*/
public static String encode(String str)
{
//根据默认编码获取字节数组
byte[] bytes=str.getBytes();
StringBuilder sb=new StringBuilder(bytes.length*2);
//将字节数组中每个字节拆解成2位16进制整数
for(int i=0;i<bytes.length;i++)
{
sb.append(hexString.charAt((bytes[i]&0xf0)>>4));
sb.append(hexString.charAt((bytes[i]&0x0f)>>0));
}
return sb.toString();
}
/*
* 将16进制数字解码成字符串,适用于所有字符(包括中文)
*/
public static String decode(String bytes)
{
ByteArrayOutputStream baos=new ByteArrayOutputStream(bytes.length()/2);
//将每2位16进制整数组装成一个字节
for(int i=0;i<bytes.length();i+=2)
baos.write((hexString.indexOf(bytes.charAt(i))<<4 |hexString.indexOf(bytes.charAt(i+1))));
return new String(baos.toByteArray());
分享到:
相关推荐
本文实例讲述了javascript实现的字符串与十六进制表示字符串相互转换方法。分享给大家供大家参考。具体如下: 之所以写这个,是因为发现SQL注入和XSS中经常利用十六进制表示的字符串,比如 SELECT CONCAT(0x68656c6...
首先,它将输入的十六进制字符串转换为字节数组,然后使用这些字节尝试以UTF-8、UTF-16(与Unicode相同)、UTF-16LE(小端字节序)、UTF-16BE(大端字节序)、UTF-32以及各自的LE和BE版本进行解码。`str2all`方法则...
4. 将字符串转换为十六进制字符串:`public static String encodeHexStr(String str, Charset charset)` 该方法将字符串转换为十六进制字符串。该方法可以将字符串转换为小写或大写的十六进制字符串,可以根据需要...
在Java中,我们可以利用`Integer.parseInt()`方法将十六进制字符串转换为整数,再使用位运算符`^`来进行异或操作。首先,我们需要将输入的十六进制字符串按空格分隔,然后对每个分隔后的十六进制数进行异或运算。...
在 Java 中,我们可以使用 `HexString2Bytes` 函数将 16 进制字符串转换为 byte 数组。该函数接受一个参数 src,即 16 进制字符串,然后将其转换为 byte 数组。 ```java public static byte[] HexString2Bytes...
在Android开发中,有时我们需要将字节数组(byte array)转换为十六进制字符串,以便于数据存储、传输或调试。这是因为字节数组是二进制数据,而十六进制字符串则是一种人类可读的表示方式。下面我们将详细讨论如何...
二、字节数组与十六进制字符串转换 1. **字节数组转十六进制字符串**:可以使用自定义方法或者`HexUtils`类(参考你的文件名)。例如: ```java byte[] bytes = {1, 2, 3}; String hexString = toHexString(bytes);...
在描述中提到的博文链接虽然无法直接访问,但根据标题,我们可以推测博主可能分享了一种将十六进制字符串转换为字节数组的方法。通常,这种转换过程包括以下步骤: 1. **预处理**:检查输入的十六进制字符串是否...
描述中提到的“该程序主要用于将jpg图片的数据流转换为十六进制字符串”,这意味着有一个特定的程序或脚本,它可以读取jpg图片的原始二进制数据,然后将其转化为由0到9和A到F这些字符组成的十六进制序列。...
- `Integer.toHexString()`和`Integer.parseInt(hexStr, 16)`是十六进制字符串与整数之间转换的常用方法。 4. **字符编码与解码**: Java中的`Character`类提供了处理单个字符的方法。例如,可以使用`Character....
/* java二进制,字节数组,字符,十六进制,BCD编码转换2007-06-07 00:17/** *//** * 把16进制字符串转换成字节数组 * @param hex * @return */
在Java中,我们可以使用`Integer.toHexString()`方法轻松地将一个整数转换为16进制字符串。 下面,我们来看`StringToAscii.java`文件中的实现方式,它主要涉及到字符到整数的转换和整数到16进制的转换。由于没有...
- 示例中的`hexStringToByte()`方法将十六进制字符串转换为字节数组,而`bytesToHexString()`则将字节数组转换为十六进制字符串。 2. **字节数组** - 字节数组在Java中用`byte[]`表示,它可以存储任意字节值,常...
总结来说,将十六进制字符串转换为byte数组是编程中常见的操作,涉及到的主要知识点包括字符串处理、二进制数据操作以及对不同编程语言的API理解。在实际应用中,我们需要根据具体需求选择合适的方法和工具,以确保...
描述中给出的例子 "FF9A44" 是一个典型的十六进制字符串,而转换目标是将其拆分为 "0xFF 0x9A 0x44" 的形式。这里的 "0x" 前缀是编程语言中用来标识十六进制数值的习惯写法,并非实际的数值部分。 这个转换过程在...
2. **转换十六进制数**:将读取的十六进制字符串转换为整数。可以使用`Integer.parseInt(hexString, 16)`方法,其中16是基数参数,表示输入是十六进制。 3. **拆分RGB值**:将每个整数拆分为红、绿、蓝三个通道的值...
在Java中,有内置的方法可以直接将十六进制字符串转换为十进制整数。这些方法包括`Integer.parseInt()`和`Long.parseLong()`,它们都接受一个字符串作为参数,以及一个表示该字符串所代表的基数的第二个参数。例如,...
例如,在Python中,`hex()`函数用于将整数转换为小写的十六进制字符串,而`int()`函数配合`16`作为基数可以将十六进制字符串转换回整数。 7. **内存表示**:在计算机内存中,所有数据都是以二进制形式存储的。十六...
2. **十六进制转二进制**:接着调用 `HexStringToBinary` 方法将十六进制字符串转换回字节数组,并再次转换为字符串打印出来,验证转换的正确性。 3. **转换方法实现**:`BinaryToHexString` 和 `HexStringToBinary`...
例如,在存储和传输大量浮点数据时,有时会将它们转换为十六进制字符串,以节省空间并方便处理。 在进行单精度和双精度浮点数与十六进制转换时,需要注意的是,由于浮点数的存储方式涉及舍入误差,转换过程中可能会...