欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

将传进来的十六进制表示的字符串转换成byte数组 文件下载

程序员文章站 2024-01-10 23:58:51
...
/**
	 * 将传进来的十六进制表示的字符串转换成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();
		}

	}
  • lib.zip (435.9 KB)
  • 下载次数: 2