java &安卓 16进制字符串与byte互换以及int与byte类型数据转换
来源:互联网 发布:htc数据连接已断开 编辑:程序博客网 时间:2024/06/16 15:28
package com.eastsoft.android.esbic.util;/** * Created by lijun on 2017/4/20/020. */public class ByteStringChangeUtil { /** * 16进制的字符串表示转成字节数组 * * @param hexString 16进制格式的字符串 * @return 转换后的字节数组 **/ public static byte[] hexToBytes(String hexString) { if (hexString == null || hexString.equals("")) { return null; } int length = hexString.length() / 2; char[] hexChars = hexString.toCharArray(); byte[] bytes = new byte[length]; String hexDigits = "0123456789abcdef"; for (int i = 0; i < length; i++) { int pos = i * 2; // 两个字符对应一个byte int h = hexDigits.indexOf(hexChars[pos]) << 4; // 注1 int l = hexDigits.indexOf(hexChars[pos + 1]); // 注2 if(h == -1 || l == -1) { // 非16进制字符 return null; } bytes[i] = (byte) (h | l); } return bytes; } public static String bytesToHex(byte[] src){ if (src == null || src.length <= 0) { return null; } StringBuilder stringBuilder = new StringBuilder(""); for (int i = 0; i < src.length; i++) { // 之所以用byte和0xff相与,是因为int是32位,与0xff相与后就舍弃前面的24位,只保留后8位 String str = Integer.toHexString(src[i] & 0xff); if (str.length() < 2) { // 不足两位要补0 stringBuilder.append(0); } stringBuilder.append(str); } return stringBuilder.toString(); }}
package cn.com.eastsoft.android.esbic.util;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.net.Inet4Address;import java.net.InetAddress;import java.net.NetworkInterface;import java.security.SecureRandom;import java.util.ArrayList;import java.util.Enumeration;import java.util.List;import java.util.Properties;public class ToolFunc{ private ToolFunc() { } public static byte[] int2byte(int num) { byte[] str = new byte[4]; str[3] = (byte) (num % 256); str[2] = (byte) ((num >> 8) % 256); str[1] = (byte) ((num >> 16) % 256); str[0] = (byte) ((num >> 24) % 256); return str; } public static byte[] int2byteLittleEndian(int num) { byte[] str = new byte[4]; str[0] = (byte) (num % 256); str[1] = (byte) ((num >> 8) % 256); str[2] = (byte) ((num >> 16) % 256); str[3] = (byte) ((num >> 24) % 256); return str; } public static byte[] long2byteLittleEndian(long num) { byte[] str = new byte[8]; str[0] = (byte) (num % 256); str[1] = (byte) ((num >> 8) % 256); str[2] = (byte) ((num >> 16) % 256); str[3] = (byte) ((num >> 24) % 256); str[4] = (byte) ((num >> 32) % 256); str[5] = (byte) ((num >> 40) % 256); str[6] = (byte) ((num >> 48) % 256); str[7] = (byte) ((num >> 56) % 256); return str; } public static long byte2longLittleEndian(byte[] str, int index, int len) { long num = 0; int j = 0; if (str == null || (str.length < len && (len - index <= 8))) { return -1; } if (len - index > 8) { return -1; } for (int i = index; i < len; i++) { num |= (long) (str[i] & 0xFF) << (j++ * 8); } return num; } public static byte[] short2byte(short num) { byte[] str = new byte[2]; str[1] = (byte) (num % 256); str[0] = (byte) ((num >> 8) % 256); return str; } public static byte[] short2byteLittleEndian(short num) { byte[] str = new byte[2]; str[0] = (byte) (num % 256); str[1] = (byte) ((num >> 8) % 256); return str; } public static int byte2int(byte[] str) { if (str == null || str.length > 4) return -1; int num = 0; for (int i = str.length - 1; i >= 0; i--) { int tmp = (str.length - 1 - i) * 8; num += (str[i] << tmp) & (0xFF << tmp); } return num; } public static short byte2shortLittleEndian(byte[] str) { if (str == null || str.length != 2) return -1; short num = 0; num += str[0] & 0xFF; num += (str[1] << 8) & 0xFF00; return num; } public static short byte2short(byte[] str) { if (str == null || str.length != 2) return -1; short num = 0; num += str[1] & 0xFF; num += (str[0] << 8) & 0xFF00; return num; } public static int byte2int(byte[] str, int index, int len) { int num = 0; int j = 0; if (str == null || (str.length < len && (len - index <= 4))) { return -1; } if (len - index > 4) { return -1; } for (int i = len - 1; i >= index; i--) { num += (str[i] & 0xFF) << (j++ * 8); } return num; } public static int byte2intLittleEndian(byte[] str, int index, int len) { int num = 0; int j = 0; if (str == null || (str.length < len && (len - index <= 4))) { return -1; } if (len - index > 4) { return -1; } for (int i = index; i < len; i++) { num += (str[i] & 0xFF) << (j++ * 8); } return num; } public static String getTmpPath() { String path = "D:\\work\\program\\smartHome\\tmp\\"; String system = ToolFunc.getOperateSystemName(); if (system.compareTo("windows") != 0) { path = "/tmp/"; } return path; } public static String getDataBasePath() { String path = "D:\\work\\program\\smartHome\\database\\"; String system = ToolFunc.getOperateSystemName(); if (system.compareTo("windows") != 0) { path = "/mnt/data/osgi/database/"; } return path; } public static String getLogPath() { String path = "D:\\work\\program\\smartHome\\logs\\"; String system = ToolFunc.getOperateSystemName(); if (system.compareTo("windows") != 0) { path = "/tmp/logs/"; } return path; } public static String getOperateSystemName() { Properties props = System.getProperties(); String osName = props.getProperty("os.name"); String os; if (osName.indexOf(new String("Windows")) != -1) { os = "windows"; } else { os = "linux"; } return os; } public static Boolean isLinuxSystem() { return (getOperateSystemName().compareTo("linux") == 0); } public static String hex2String(byte[] data) { if (data == null) { return null; } StringBuilder sb = new StringBuilder(); for (int i = 0; i < data.length; i++) { sb.append(String.format("%02X", data[i])); } return sb.toString(); } public static byte[] string2hex(byte[] str) { if (str == null) { return null; } if (str.length % 2 != 0) { return null; } byte[] data = new byte[str.length / 2]; System.err.println("str2hex str length ["+str.length+"]" ); int index = 0; for (int i = 0; i < str.length; i += 2) { if (str[i] >= '0' && str[i] <= '9') { data[index] = (byte) (str[i] - '0'); } else if (str[i] >= 'A' && str[i] <= 'F') { data[index] = (byte) (str[i] - 'A' + 10); } else if (str[i] >= 'a' && str[i] <= 'f') { data[index] = (byte) (str[i] - 'a' + 10); } else { byte[] tmp = new byte[1]; tmp[0] = str[i]; String tmpStr = new String(tmp); System.err.println("str2hex error!!! str["+i+"]["+str[i]+"]["+tmpStr+"]" ); return null; } data[index] = (byte) (data[index] << 4); if (str[i + 1] >= '0' && str[i + 1] <= '9') { data[index] += (byte) (str[i + 1] - '0'); } else if (str[i + 1] >= 'A' && str[i + 1] <= 'F') { data[index] += (byte) (str[i + 1] - 'A' + 10); } else if (str[i + 1] >= 'a' && str[i + 1] <= 'f') { data[index] += (byte) (str[i + 1] - 'a' + 10); } else { System.err.println("str2hex error!!! str["+i+"]["+str[i]+"]["+new String(new byte[]{str[i]})+"]" ); return null; } index++; } return data; } public static int random_int() { SecureRandom random = new SecureRandom(); return random.nextInt(0x12345678); } public static void random(byte[] value) { SecureRandom random = new SecureRandom(); random.nextBytes(value); } public static InetAddress getLocalHost() { Enumeration<NetworkInterface> netInterfaces = null; InetAddress addr = null; try { if (ToolFunc.getOperateSystemName().equals("windows") == true) { // addr = InetAddress.getByName("192.168.1.49"); addr = InetAddress.getByName("129.1.9.123"); return addr; } InetAddress baiduAddr = InetAddress.getByName("61.135.169.105"); netInterfaces = NetworkInterface.getNetworkInterfaces(); Enumeration<InetAddress> ips = null; while (netInterfaces.hasMoreElements()) { NetworkInterface ni = netInterfaces.nextElement(); ips = ni.getInetAddresses(); while (ips.hasMoreElements()) { addr = ips.nextElement(); int timeOut = 3000; if (baiduAddr.isReachable(ni, 0, timeOut) == true) { return addr; } } } } catch (Exception e) { e.printStackTrace(); } return null; } public static List<InetAddress> getLocalHosts() { List<InetAddress> addrs = new ArrayList<InetAddress>(); Enumeration<NetworkInterface> netInterfaces = null; try { netInterfaces = NetworkInterface.getNetworkInterfaces(); Enumeration<InetAddress> ips = null; while (netInterfaces.hasMoreElements()) { NetworkInterface ni = netInterfaces.nextElement(); ips = ni.getInetAddresses(); while (ips.hasMoreElements()) { InetAddress addr = ips.nextElement(); if (addr instanceof Inet4Address) { addrs.add(addr); } } } return addrs; } catch (Exception e) { e.printStackTrace(); } return null; } // for example "abcNULLNULL" -> "abc" public static byte[] delInvalidByte(byte[] src, byte[] c) { String dest; String tmp = new String(src); String[] subArray = tmp.split(new String(c)); dest = subArray[0]; return dest.getBytes(); } public static byte calculateCS(byte[] data) throws Exception { byte cs = 0; if (data == null) { throw new Exception("data is null"); } for (int i = 0; i < data.length; i++) { cs += data[i]; } return cs; } public static boolean checkIP(String ip) { if (ip == null) { return false; } String regex = "^(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|[1-9])\\." + "(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)\\." + "(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)\\." + "(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)$"; return ip.matches(regex); } public static boolean checkDomainName(String domain) { if (domain == null) { return false; } String regex = "((\\w|-)+\\.)+\\w+"; return domain.matches(regex); } public static int byteSearch(byte[] data, int start, int end, byte value) { if (data == null) { return -1; } if (start > end) { return -1; } if (data.length < end) { return -1; } for (int i = start; i < end; i++) { if (data[i] == value) { return i; } } return -1; } public static boolean isFileExist(String filename) { if (filename == null) { return false; } File file = new File(filename); return file.exists(); } public static void deleteFile(String filename) { if (filename == null) { return; } File file = new File(filename); if (file.exists()) { try { file.delete(); } catch (Exception e) { e.printStackTrace(); } } } public static boolean copyFile(String original, String target) { if (original == null || target == null) { return false; } try { File originalFile = new File(original); File targetFile = new File(target); if (originalFile.exists() == false) { return false; } if (targetFile.exists() == true) { targetFile.delete(); } FileInputStream in = new FileInputStream(originalFile); FileOutputStream out = new FileOutputStream(targetFile); byte[] buff = new byte[4096]; int n = 0; while ((n = in.read(buff)) != -1) { out.write(buff, 0, n); } out.flush(); in.close(); out.close(); if (isLinuxSystem() == true) { Runtime.getRuntime().exec("sync"); } return true; } catch (Exception e) { return false; } } public static void deleteFileBySuffixName(String path, String...args) { File file = new File(path); File[] filelist = file.listFiles(); for (int i = 0; i < filelist.length; i++) { File temp = filelist[i]; for(String arg : args) { if (temp.getName().endsWith("."+arg)) { temp.delete(); } } } } public static void deleteAllFile(String path) { File file = new File(path); File[] filelist = file.listFiles(); for (int i = 0; i < filelist.length; i++) { File temp = filelist[i]; temp.delete(); } }}
阅读全文
0 0
- java &安卓 16进制字符串与byte互换以及int与byte类型数据转换
- java int 与 byte转换
- java int 类型与 byte 类型之间的转换
- java int 类型与 byte 类型之间的转换
- byte 与16进制字符串转换
- 存储16进制数据的字节数组BYTE与字符串之间的互换
- byte[]与int转换
- byte 与 int 转换
- int 与 byte 的强制类型转换
- Java 将byte[] 与int类型互相转换
- java中byte数组与int类型的转换
- java int与byte类型转换的2种方法
- Java中byte与16进制字符串的互换原理
- Java中byte与16进制字符串的互换原理
- java中int与byte,以及long与byte之间的转换
- Java类型转换(int - byte[],float - byte[])
- Java类型转换(int - byte[],float - byte[])
- Java类型转换(int - byte[],float - byte[])
- git bash修改远程仓库地址
- JavaScript高级程序设计–DMO节点变化
- Linux 基础命令(十四)—— 文本处理三剑客之AWK
- 安卓更新ui的几种方式
- 牛栏(Floyd)
- java &安卓 16进制字符串与byte互换以及int与byte类型数据转换
- MyBatis连接数据库增删改查,并使用log4j.
- spark基础之checkpoint机制
- Codeforces Round #443 (Div. 2) A. Borya's Diagnosis(水水的模拟)
- Linux虚拟机设备无法连接到它的理想主机控制器
- 六行 Python 代码切入数据分析?
- 洛谷 P1220 关路灯(DFS)
- python+Selenium自动签到实例
- ssm框架下的poi导入小记