1dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu/* 2dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * Copyright 2012 Sebastian Annies, Hamburg 3dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * 4dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * Licensed under the Apache License, Version 2.0 (the License); 5dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * you may not use this file except in compliance with the License. 6dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * You may obtain a copy of the License at 7dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * 8dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * http://www.apache.org/licenses/LICENSE-2.0 9dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * 10dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * Unless required by applicable law or agreed to in writing, software 11dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * distributed under the License is distributed on an AS IS BASIS, 12dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * See the License for the specific language governing permissions and 14dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * limitations under the License. 15dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu */ 16dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhupackage com.coremedia.iso; 17dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 18dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhuimport java.io.UnsupportedEncodingException; 19dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 20dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu/** 21dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * Converts <code>byte[]</code> -> <code>String</code> and vice versa. 22dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu */ 23dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhupublic final class Utf8 { 24dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public static byte[] convert(String s) { 25dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu try { 26dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu if (s != null) { 27dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu return s.getBytes("UTF-8"); 28dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } else { 29dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu return null; 30dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 31dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } catch (UnsupportedEncodingException e) { 32dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu throw new Error(e); 33dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 34dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 35dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 36dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public static String convert(byte[] b) { 37dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu try { 38dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu if (b != null) { 39dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu return new String(b, "UTF-8"); 40dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } else { 41dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu return null; 42dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 43dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } catch (UnsupportedEncodingException e) { 44dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu throw new Error(e); 45dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 46dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 47dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 48dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public static int utf8StringLengthInBytes(String utf8) { 49dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu try { 50dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu if (utf8 != null) { 51dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu return utf8.getBytes("UTF-8").length; 52dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } else { 53dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu return 0; 54dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 55dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } catch (UnsupportedEncodingException e) { 56dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu throw new RuntimeException(); 57dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 58dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 59dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu} 60