十六进制数据与字符串的相互转换

谁践踏了优雅 2022-09-30 10:54 257阅读 0赞
  1. public static String bytesToHexString(byte[] src){
  2. StringBuilder stringBuilder = new StringBuilder("");
  3. if (src == null || src.length <= 0) {
  4. return null;
  5. }
  6. for (int i = 0; i < src.length; i++) {
  7. int v = src[i] & 0xFF;
  8. String hv = Integer.toHexString(v);
  9. if (hv.length() < 2) {
  10. stringBuilder.append(0);
  11. }
  12. stringBuilder.append(hv);
  13. }
  14. return stringBuilder.toString();
  15. }
  16. /** * Convert hex string to byte[] * @param hexString the hex string * @return byte[] */
  17. public static byte[] hexStringToBytes(String hexString) {
  18. if (hexString == null || hexString.equals("")) {
  19. return null;
  20. }
  21. hexString = hexString.toUpperCase();
  22. int length = hexString.length() / 2;
  23. char[] hexChars = hexString.toCharArray();
  24. byte[] d = new byte[length];
  25. for (int i = 0; i < length; i++) {
  26. int pos = i * 2;
  27. d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1]));
  28. }
  29. return d;
  30. }
  31. /** * Convert char to byte * @param c char * @return byte */
  32. private static byte charToByte(char c) {
  33. return (byte) "0123456789ABCDEF".indexOf(c);
  34. }

发表评论

表情:
评论列表 (有 0 条评论,257人围观)

还没有评论,来说两句吧...

相关阅读