Java examples for File Path IO:Byte Array
Convert an int into the corresponding byte array by encoding each two hexadecimal digits as a char.
/*/* ww w .java2 s . c om*/ * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ //package com.java2s; import java.io.ByteArrayOutputStream; public class Main { public static void main(String[] argv) throws Exception { int integer = 2; System.out.println(java.util.Arrays.toString(convert(integer))); } /** * Convert an int into the corresponding byte array by encoding each two * hexadecimal digits as a char. This will return a byte array to the length * specified by bufsize. * * @param integer * The int representation. * @param bufsize * The required byte array size. * @return the hexadecimal digits as a byte array */ public static byte[] convert(final int integer, final int bufsize) { final StringBuilder buf = new StringBuilder( Integer.toHexString(integer)); // Convert to an even number of digits if (buf.length() % 2 != 0) { buf.insert(0, "0"); } int size = buf.length() / 2; if (size > bufsize) { buf.delete(0, buf.length() - bufsize * 2); } else { while (size < bufsize) { buf.insert(0, "00"); size++; } } return convert(buf.toString()); } /** * Convert an int into the corresponding byte array by encoding each two * hexadecimal digits as a char. * * @param integer * The int representation * @return the hexadecimal digits as a byte array */ public static byte[] convert(final int integer) { return convert(Integer.toHexString(integer)); } /** * Convert a String of hexadecimal digits into the corresponding byte array * by encoding each two hexadecimal digits as a byte. * * @param digits * The hexadecimal digits representation. * @return the hexadecimal digits as a byte array */ public static byte[] convert(String digits) { if (digits.length() % 2 == 0) { // Even number of digits, so ignore } else { // Convert to an even number of digits digits = "0" + digits; } final ByteArrayOutputStream baos = new ByteArrayOutputStream(); for (int i = 0; i < digits.length(); i += 2) { final char c1 = digits.charAt(i); final char c2 = digits.charAt(i + 1); byte b = 0; if (c1 >= '0' && c1 <= '9') { b += (c1 - '0') * 16; } else if (c1 >= 'a' && c1 <= 'f') { b += (c1 - 'a' + 10) * 16; } else if (c1 >= 'A' && c1 <= 'F') { b += (c1 - 'A' + 10) * 16; } else { throw new IllegalArgumentException("Bad hexadecimal digit"); } if (c2 >= '0' && c2 <= '9') { b += c2 - '0'; } else if (c2 >= 'a' && c2 <= 'f') { b += c2 - 'a' + 10; } else if (c2 >= 'A' && c2 <= 'F') { b += c2 - 'A' + 10; } else { throw new IllegalArgumentException("Bad hexadecimal digit"); } baos.write(b); } return baos.toByteArray(); } }