为了账号安全,请及时绑定邮箱和手机立即绑定

用Java将字符串转换为十六进制

用Java将字符串转换为十六进制

慕沐林林 2019-07-05 14:33:36
用Java将字符串转换为十六进制我试图在java中将像“test 123”这样的字符串转换成十六进制形式。我目前正在使用BlueJ。为了把它转化回来,除了向后,这是一样的东西吗?
查看完整描述

3 回答

?
白衣非少年

TA贡献1155条经验 获得超0个赞

以下是将其转换为十六进制的一种简单方法:

public String toHex(String arg) {
    return String.format("%040x", new BigInteger(1, arg.getBytes(/*YOUR_CHARSET?*/)));}


查看完整回答
反对 回复 2019-07-05
?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

为了确保十六进制始终有40个字符长,BigInteger必须是肯定的:

public String toHex(String arg) {
  return String.format("%x", new BigInteger(1, arg.getBytes(/*YOUR_CHARSET?*/)));}


查看完整回答
反对 回复 2019-07-05
?
慕虎7371278

TA贡献1802条经验 获得超4个赞

您编码为十六进制的数字必须表示字符的某些编码,例如UTF-8。因此,首先将字符串转换为以该编码方式表示字符串的字节[],然后将每个字节转换为十六进制。

public static String hexadecimal(String input, String charsetName) throws UnsupportedEncodingException {
    if (input == null) throw new NullPointerException();
    return asHex(input.getBytes(charsetName));}private static final char[] HEX_CHARS = "0123456789abcdef".toCharArray();
    public static String asHex(byte[] buf){
    char[] chars = new char[2 * buf.length];
    for (int i = 0; i < buf.length; ++i)
    {
        chars[2 * i] = HEX_CHARS[(buf[i] & 0xF0) >>> 4];
        chars[2 * i + 1] = HEX_CHARS[buf[i] & 0x0F];
    }
    return new String(chars);}


查看完整回答
反对 回复 2019-07-05
  • 3 回答
  • 0 关注
  • 5737 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号