/**
* 将传进来的十六进制表示的字符串转换成byte数组
*
* @param hexString
* @return 二进制表示的byte[]数组
*/
private static byte[] hexStringToBytes(String hexString) {
if (hexString == null || hexString.equals("")) {
return null;
}
hexString = hexString.toUpperCase(Locale.getDefault());
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;
// 两个字符一个对应byte的高四位一个对应第四位
d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1]));
}
return d;
}
/**
* 将传进来的字符代表的数字转换成二进制数
*
* @param c
* 要转换的字符
* @return 以byte的数据类型返回字符代表的数字的二进制表示形式
*/
private static byte charToByte(char c) {
return (byte) "0123456789ABCDEF".indexOf(c);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
PostMethod get = new PostMethod(
"http://localhost:8080/servlet/getDoc");
String filePath = "d:/photo1.doc";
NameValuePair[] data = new NameValuePair[2];
NameValuePair nameValuePair1 = new NameValuePair("token", "4565465fgfdg");
NameValuePair nameValuePair2 = new NameValuePair("docId", "1101");
data[0] = nameValuePair1;
data[1] = nameValuePair2;
get.setRequestBody(data);
String result = "";
HttpClient client = new HttpClient();
try {
client.executeMethod(get);
byte[] responseBody = get.getResponseBody();
StringBuffer sb = new StringBuffer();
sb.append(get.getResponseBody());
result = new String(get.getResponseBody(), "utf-8");
String[] tt = result.split("\"");
File file = new File(filePath); // 用File类表示出源文件夹
if (!file.exists()) {
file.createNewFile();
}
FileOutputStream fo = new FileOutputStream(file);
// Blob bl = new BlobImpl(hexStringToBytes(tt[7]));
ByteArrayInputStream bi= new ByteArrayInputStream(hexStringToBytes(tt[7]));
InputStream in = bi;
int i;
byte[] buffer = new byte[20480];
while ((i = in.read(buffer)) != -1) {
fo.write(buffer, 0, i);
}
fo.close();
System.out.println("restConn-----------------------------------"+ tt[7]);
} catch (HttpException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
分享到:
相关推荐
在描述中提到的博文链接虽然无法直接访问,但根据标题,我们可以推测博主可能分享了一种将十六进制字符串转换为字节数组的方法。通常,这种转换过程包括以下步骤: 1. **预处理**:检查输入的十六进制字符串是否...
本工具专注于将16进制字符串转换为10进制的byte数组,这在处理如数据库存储、加密解密、网络通信等场景中非常常见。 1. **16进制字符串与10进制byte数组的概念** - **16进制字符串**:由0-9和A-F(或a-f)字符组成...
反之,从十六进制字符串转换回字节数组的过程也相对简单: ```csharp public static byte[] HexStringToByteArray(string hex) { int length = hex.Length / 2; byte[] bytes = new byte[length]; for (int i = 0...
在Android开发中,有时我们需要将字节数组(byte array)转换为十六进制字符串,以便于数据存储、传输或调试。这是因为字节数组是二进制数据,而十六进制字符串则是一种人类可读的表示方式。下面我们将详细讨论如何...
由C代码翻译过来的PHP CRC8算法,内有十六进制转字节数组与字节数组转十六进制,内有十六进制转byte数组与byte数组转十六进制
这个示例展示了如何使用`sprintf`将一个字节转换为十六进制字符串,以及如何使用`strtol`将一个十六进制字符串转换回字节。 在实际应用中,你可能会遇到更复杂的情况,比如处理包含多个字节的数组或者字符串,这时...
/** * 16进制表示的字符串转换为字节数组 * @param hexString 16进制表示的字符串 * @return byte[] 字节数组 */ public static byte[] hexStringToByteArray(String hexString) { hexString = hexString.replaceAll...
二、字节数组与十六进制字符串转换 1. **字节数组转十六进制字符串**:可以使用自定义方法或者`HexUtils`类(参考你的文件名)。例如: ```java byte[] bytes = {1, 2, 3}; String hexString = toHexString(bytes);...
在以下代码中,我们可以看到 Lua 程序如何将十六进制字符串转换为二进制数据: ```lua -- 读取十六进制字符串文件 local hexstrfile = io.open(arg[1], "rb") local hexstr = hexstrfile:read("*a") -- 转换十六...
byte数组、十进制、十六进制间的两两转换
要将字符串转换为十六进制串,我们需要对字符串中的每个字符进行编码,然后将编码结果转换成十六进制字符串。C#提供了`BitConverter`类和`ToString`方法来完成这个任务: ```csharp public static string StringTo...
但是,如果我们需要将十六进制字符串转换为Byte数组时,我们需要使用Convert类的ToByte方法,如下所示: ```csharp byte[] bytes = new byte[str.Length / 2]; for (int i = 0; i ; i++) { bytes[i] = Convert.To...
1. 字节数组到十六进制字符串的转换:用于将字节数组的数据转换成易于阅读和传递的十六进制格式。 2. 十六进制字符串到字节数组的转换:相反地,这个方法将十六进制字符串解析回原始字节数组形式。 3. 其他辅助方法...
首先,我们要了解如何将十六进制字符串转换为整数值。在C++中,可以使用`std::stringstream`和`std::hex`函数来完成这个任务。`std::stringstream`是一个字符流,允许我们像处理输入输出流一样处理字符串;`std::hex...
在Java中,我们可以利用`Integer.parseInt()`方法将十六进制字符串转换为整数,再使用位运算符`^`来进行异或操作。首先,我们需要将输入的十六进制字符串按空格分隔,然后对每个分隔后的十六进制数进行异或运算。...
java工具类 : string转10进制sacii byte数组、 10进制sacii byte数组转16进制字符数组、 16进制字符数组转16进制byte数组、 string与BCD互转等方法,包含多个转换方法, 足够满足日常解包组包需求
/* java二进制,字节数组,字符,十六进制,BCD编码转换2007-06-07 00:17/** *//** * 把16进制字符串转换成字节数组 * @param hex * @return */
此函数用于将一个十六进制字符串转换为字节数组。该函数首先会移除输入字符串中的所有非十六进制字符,然后检查字符串长度是否为偶数,如果不是,则在末尾添加一个空字符以保证转换正确进行。接着,通过循环遍历字符...