import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.*;
public class HexUtil {
public static void main(String[] args) {
System.out.println(getRandomHex(4));
}
//拼接两个数组
public static Long[] concat(Long[] longList1,Long[] longList2){
List<Long> array1 = new ArrayList<>(Arrays.asList(longList1));
List<Long> array2 = new ArrayList<>(Arrays.asList(longList2));
array1.addAll(array2);
//System.out.println(array1);
Long[] resList = array1.toArray(new Long[0]);
//System.out.println(list1[0] + "~~~" + list1[1]);
return resList;
}
// 10进制数转16进制
public static String toHex(long i){
//String str = Integer.toHexString(i);
String str = Long.toHexString(i);
int lenth = str.length();
if(lenth < 16){
for(int j =0;j < 16 - lenth;j++){
str = "0" + str;
}
}
/*//System.out.println(str);
if(str.length() % 2 == 0){
return str;
}else{
return "0" + str;
}*/
return str;
}
//10进制数组转换成16进制字符串数组
//public static String[] toHexList(long[] longList){
public static String[] toHexList(Long[] longList){
//结果list
String[] stringList = new String[longList.length];
for(int i = 0;i<longList.length;i++){
stringList[i] = toHex(longList[i]);
}
return stringList;
}
public static String getType(String[] list){
Random random=new Random();
return list[random.nextInt(list.length)];
}
//数组中随机获取两个不同元素
public static String[] getID(String[] list){
String[] res = {"0","0"};
Random random1=new Random();
int number=random1.nextInt(list.length);
int number2=random1.nextInt(list.length);
res[0] = list[number];
if(number == number2){
res[1] = list[random1.nextInt(list.length)];
}else{
res[1] = list[number2];
}
return res;
}
//16进制字符串转为byte
public static byte[] getHexBytes(String str) {
byte[] bytes = new byte[str.length() / 2];
for (int i = 0; i < str.length() / 2; i++) {
String subStr = str.substring(i * 2, i * 2 + 2);
bytes[i] = (byte) Integer.parseInt(subStr, 16);
}
return bytes;
}
//将16进制的byte数组转换成字符串
public static String getBufHexStr(byte[] raw){
String HEXES = "0123456789ABCDEF";
if ( raw == null ) {
return null;
}
final StringBuilder hex = new StringBuilder( 2 * raw.length );
for ( final byte b : raw ) {
hex.append(HEXES.charAt((b & 0xF0) >> 4))
.append(HEXES.charAt((b & 0x0F)));
}
return hex.toString();
}
//一定范围内获取随机hex String
public static String getRandomLong( long n) {
Random random = new Random();
// error checking and 2^x checking removed for simplicity.
long bits, val;
do {
bits = (random.nextLong() << 1) >>> 1;
val = bits % n;
} while (bits-val+(n-1) < 0L);
String str = Long.toHexString(val);
return str;
}
//获取当前时间
public static String getSendTime(){
long time = System.currentTimeMillis()/1000;
//改为ms
//long time = System.currentTimeMillis();
String str = Long.toHexString(time*1000);
//return "00000000" + str;
return "00000" + str;
}
//获取sendId
public static String getSendIdV2(){
Random random1=new Random();
int number=random1.nextInt(3000)+6497;
String str = Long.toHexString(number);
return "000009184E71" + str;
}
//获取随机Id
public static String getRandomHex(int lenth){
String str="0123456789abcdef";
Random random1=new Random();
//指定字符串长度,拼接字符并toString
StringBuffer sb=new StringBuffer();
for (int i = 0; i < lenth; i++) {
//获取指定长度的字符串中任意一个字符的索引值
int number=random1.nextInt(str.length());
//根据索引值获取对应的字符
char charAt = str.charAt(number);
sb.append(charAt);
}
return sb.toString();
}
//读文件
public static List<Long> getUserList(String path) {
List<Long> list = new ArrayList<>();
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(path), "UTF-8"));
String line = null;
while ((line = reader.readLine()) != null) {
list.add(Long.valueOf(line));
}
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
}