盒子
盒子
文章目录
  1. 类型转化
    1. HEX
  2. 特殊串
    1. UUID
    2. json
    3. md5
  3. time
  4. AES
    1. CFB

字符串

类型转化

// 格式化
/* String.format
%[argument_index$][flags][width][.precision]conversion
argument_index: 可选,是一个十进制整数,用于表明参数在参数列表中的位置。第一个参数由 "1$" 引用,第二个参数由 "2$" 引用,依此类推。
flags: 可选,用来控制输出格式
width: 可选,是一个正整数,表示输出的最小长度
precision: 可选,用来限定输出的精度
conversion: 必须,用来表示如何格式化参数的字符
*/
formatter.format("%4$2s %3$2s %2$2s %1$2s", "a", "b", "c", "d"); // -> " d c b a"

/* flags;
- 左对齐,不可与"用0填充"同时使用
+ 正负值符号
' ' 正值前加空格, 负值前加符号
0 0填充
, 每3个数字之间用,好分隔
( 如果是负数, 用圆括号把数字括起来
*/
// string -> int
int i = Integer.parseInt(str);
double d = Double.parseDouble(str);
int i = Integer.valueOf(str).intValue();
// int -> string
String str = String.valueOf(intvalue);
String str = Integer.toString(intvalue);
String s = "" + intvalue;
// string -> byte
byte[] byte_data = "ok".getBytes();
// byte -> string
new String(byte_data);
new String(srtbyte, "UTF-8");
new String(b, 0, len, "UTF-8")
// byte <==> int
public static byte intToByte(int x) {
return (byte) x;
}
public static int byteToInt(byte b) {
//Java 总是把 byte 当做有符处理;我们可以通过将其和 0xFF 进行二进制与得到它的无符值
return b & 0xFF;
}
// byte <==> long
private static ByteBuffer buffer = ByteBuffer.allocate(8);
public static byte[] longToBytes(long x) {
buffer.putLong(0, x);
return buffer.array();
}
public static long bytesToLong(byte[] bytes) {
buffer.put(bytes, 0, bytes.length);
buffer.flip();//need flip
return buffer.getLong();
}

HEX

Integer.toHexString(b & 0xFF).toUpperCase()  // 丢失前面的0
String.format("%02X", b);

public class ISOUtils {
private static final char[] hexCode = "0123456789ABCDEF".toCharArray();

public static String Hex2String(byte[] data) {
if (data == null)
return "";
StringBuilder r = new StringBuilder(data.length * 2);
for (byte b : data) {
r.append(hexCode[b >> 4 & 0xF]);
r.append(hexCode[b & 0xF]);
r.append(" ");
}
return r.toString();
}
}

特殊串

UUID

String strUUID = UUID.randomUUID().toString();

json

// com.google.gson: JsonObject, JsonParser
String strJson = "{}";
JsonObject jo = new JsonParser().parse(strJson).getAsJsonObject();

JsonObject obj = new JsonObject();
obj.addProperty(key, value);
obj.toString();

// 遍历
JsonObject obj = JsonParser.parseString(data).getAsJsonObject();
for (String key : obj.keySet()) {
String value = obj.get(key).getAsString();
}
// fastjson

md5

public byte[] getMd5(){
try {
MessageDigest md = MessageDigest.getInstance("MD5");
return md.digest(byteContent);
} catch (java.security.NoSuchAlgorithmException e) {
e.printStackTrace();
}
return null;
}

time

public static String getDateTime(String format="yyyy-MM-dd HH:mm:ss") {
SimpleDateFormat dateFormat = new SimpleDateFormat(format, Locale.CHINESE);
return dateFormat.format(new Date(System.currentTimeMillis()));
}
public static int getTimestamp(){
return System.currentTimeMillis()/1000;
}

AES

CFB

public class CFBUtil {
private static String TAG = CFBUtil.class.getSimpleName();

private final static int MODE_ENC = 1;
private final static int MODE_DEC = 2;

private final static byte[] AES_KEY = "1234567890123456".getBytes();
private final static byte[] AES_VI = "1234567890123456".getBytes();

private static byte[] encryption(int mode, byte[] key, byte[] vi, byte[] content) {
try {
Cipher cipher = Cipher.getInstance("AES/CFB128/NoPadding"); //AES加密模式,CFB 加密模式
SecretKeySpec keySpec = new SecretKeySpec(key, "AES"); //AES加密方式
IvParameterSpec ivSpec = new IvParameterSpec(vi);
cipher.init(mode == MODE_ENC ? Cipher.ENCRYPT_MODE : Cipher.DECRYPT_MODE, keySpec, ivSpec);
return cipher.doFinal(content);
} catch (NoSuchAlgorithmException | NoSuchPaddingException |
InvalidKeyException | IllegalBlockSizeException |
BadPaddingException | InvalidAlgorithmParameterException e) {
e.printStackTrace();
Log.e(TAG, "encryption failed... err: " + e.getMessage());
} catch (Exception e) {
e.printStackTrace();
Log.e(TAG, "encryption failed ...err: " + e.getMessage());
}
return null;
}

/**
* 加密: 返回Base64密文
*/
public static String enc(String text) {
byte[] data = encryption(MODE_ENC, AES_KEY, AES_VI, text.getBytes());
return Base64.encodeToString(data, Base64.NO_WRAP);
}
/**
* 解密: 传入Base64密文
*/
public static String dec(String text) {
byte[] data = encryption(MODE_DEC, AES_KEY, AES_VI, Base64.decode(text, Base64.NO_WRAP));
return new String(data);
}
}
支持一下
扫一扫,支持一下
  • 微信扫一扫
  • 支付宝扫一扫