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

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

我试图在java中将像“test 123”这样的字符串转换成十六进制形式。我目前正在使用BlueJ。

为了把它转化回来,除了向后,这是一样的东西吗?


慕沐林林
浏览 5738回答 3
3回答

白衣非少年

以下是将其转换为十六进制的一种简单方法:public String toHex(String arg) {     return String.format("%040x", new BigInteger(1, arg.getBytes(/*YOUR_CHARSET?*/)));}

一只萌萌小番薯

为了确保十六进制始终有40个字符长,BigInteger必须是肯定的:public String toHex(String arg) {   return String.format("%x", new BigInteger(1, arg.getBytes(/*YOUR_CHARSET?*/)));}

慕虎7371278

您编码为十六进制的数字必须表示字符的某些编码,例如UTF-8。因此,首先将字符串转换为以该编码方式表示字符串的字节[],然后将每个字节转换为十六进制。public&nbsp;static&nbsp;String&nbsp;hexadecimal(String&nbsp;input,&nbsp;String&nbsp;charsetName)&nbsp;throws&nbsp;UnsupportedEncodingException&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(input&nbsp;==&nbsp;null)&nbsp;throw&nbsp;new&nbsp;NullPointerException(); &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;asHex(input.getBytes(charsetName));}private&nbsp;static&nbsp;final&nbsp;char[]&nbsp;HEX_CHARS&nbsp;=&nbsp;"0123456789abcdef".toCharArray(); &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;String&nbsp;asHex(byte[]&nbsp;buf){ &nbsp;&nbsp;&nbsp;&nbsp;char[]&nbsp;chars&nbsp;=&nbsp;new&nbsp;char[2&nbsp;*&nbsp;buf.length]; &nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;<&nbsp;buf.length;&nbsp;++i) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chars[2&nbsp;*&nbsp;i]&nbsp;=&nbsp;HEX_CHARS[(buf[i]&nbsp;&&nbsp;0xF0)&nbsp;>>>&nbsp;4]; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chars[2&nbsp;*&nbsp;i&nbsp;+&nbsp;1]&nbsp;=&nbsp;HEX_CHARS[buf[i]&nbsp;&&nbsp;0x0F]; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;new&nbsp;String(chars);}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java