如何将字符串转换成hash值,实现长尾词效果?
- 内容介绍
- 文章标签
- 相关推荐
本文共计274个文字,预计阅读时间需要2分钟。
需求:将中文字符串转换为对应的hash值
代码:javapackage util;
import java.nio.charset.StandardCharsets;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;
/** * @Author: ZD * @Date: 2023/8/29 */public class Hash { public static String getHash(String text) { try { MessageDigest digest=MessageDigest.getInstance(SHA-256); byte[] encodedhash=digest.digest(text.getBytes(StandardCharsets.UTF_8)); StringBuilder hexString=new StringBuilder(2 * encodedhash.length); for (int i=0; i 需求:将中文字符串转为对应的hash值package util;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
/**
* @Author: ZD
* @Date: 2023/8/29
*/
public class HashUtil {
public static long chineseSentenceToHash(String sentence) throws NoSuchAlgorithmException {
// 将中文语句编码为字节序列
byte[] encodedBytes = sentence.getBytes(StandardCharsets.UTF_8);
// 创建SHA-256哈希算法实例
MessageDigest digest = MessageDigest.getInstance("SHA-256");
// 计算哈希值
byte[] hashBytes = digest.digest(encodedBytes);
// 将哈希值转换为长整型
long hashValue = byteArrayToLong(hashBytes);
return hashValue;
}
private static long byteArrayToLong(byte[] bytes) {
long value = 0;
for (int i = 0; i < 8 && i < bytes.length; i++) {
value |= ((long) (bytes[i] & 0xFF)) << (8 * i);
}
return value;
}
public static void main(String[] args) throws NoSuchAlgorithmException {
String chineseSentence = "";
long hashValue = chineseSentenceToHash(chineseSentence);
System.out.println(hashValue);
}
}
本文共计274个文字,预计阅读时间需要2分钟。
需求:将中文字符串转换为对应的hash值
代码:javapackage util;
import java.nio.charset.StandardCharsets;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;
/** * @Author: ZD * @Date: 2023/8/29 */public class Hash { public static String getHash(String text) { try { MessageDigest digest=MessageDigest.getInstance(SHA-256); byte[] encodedhash=digest.digest(text.getBytes(StandardCharsets.UTF_8)); StringBuilder hexString=new StringBuilder(2 * encodedhash.length); for (int i=0; i 需求:将中文字符串转为对应的hash值package util;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
/**
* @Author: ZD
* @Date: 2023/8/29
*/
public class HashUtil {
public static long chineseSentenceToHash(String sentence) throws NoSuchAlgorithmException {
// 将中文语句编码为字节序列
byte[] encodedBytes = sentence.getBytes(StandardCharsets.UTF_8);
// 创建SHA-256哈希算法实例
MessageDigest digest = MessageDigest.getInstance("SHA-256");
// 计算哈希值
byte[] hashBytes = digest.digest(encodedBytes);
// 将哈希值转换为长整型
long hashValue = byteArrayToLong(hashBytes);
return hashValue;
}
private static long byteArrayToLong(byte[] bytes) {
long value = 0;
for (int i = 0; i < 8 && i < bytes.length; i++) {
value |= ((long) (bytes[i] & 0xFF)) << (8 * i);
}
return value;
}
public static void main(String[] args) throws NoSuchAlgorithmException {
String chineseSentence = "";
long hashValue = chineseSentenceToHash(chineseSentence);
System.out.println(hashValue);
}
}

