Java 长到十六进制字符串的字符数
您好,我正在尝试构建一个随机的16字符十六进制,为此我尝试了一个Java 长到十六进制字符串的字符数,java,hex,long-integer,Java,Hex,Long Integer,您好,我正在尝试构建一个随机的16字符十六进制,为此我尝试了一个长.toHexString(new random().nextLong()我的假设是它将始终返回16个字符的字符串,对吗?(一旦它返回15个字符)引用应该是您的第一个调用端口: 此值将转换为十六进制(以16为基数)的ASCII数字字符串,无额外的前导0 所以不,它不会总是16个字符 但是,您可以使用以下方法打印带前导零的16字符大写十六进制字符串: String.format("%016X", longValue) 您的第一个呼叫
长.toHexString(new random().nextLong()
我的假设是它将始终返回16个字符的字符串,对吗?(一旦它返回15个字符)引用应该是您的第一个调用端口:
此值将转换为十六进制(以16为基数)的ASCII数字字符串,无额外的前导0
所以不,它不会总是16个字符
但是,您可以使用以下方法打印带前导零的16字符大写十六进制字符串:
String.format("%016X", longValue)
您的第一个呼叫端口应为:
此值将转换为十六进制(以16为基数)的ASCII数字字符串,无额外的前导0
所以不,它不会总是16个字符
但是,您可以使用以下方法打印带前导零的16字符大写十六进制字符串:
String.format("%016X", longValue)
看看javadocs for(我的)
公共静态字符串到十六进制字符串(长i)
返回一个字符串
将长参数表示为基数为16的无符号整数
如果参数为,则无符号长值为参数加264
负;否则,它等于参数。此值为
转换为十六进制(基16)的ASCII数字字符串,无
额外的前导0。如果无符号幅值为零,则表示该值
通过单个零字符“0”(“\u0030”);否则,第一个
无符号震级表示的字符将不可用
零字符
事实证明,它并不总是16个字符长。但是,如果您愿意,可以用零填充:
import java.util.Random;
class Main {
public static void main(String[] args) {
String hex16Chars = String.format("%016X", new Random().nextLong());
System.out.println(hex16Chars + ", len: " + hex16Chars.length());
}
}
您将看到长度始终如预期的那样为16
事实证明,偷看这些文档确实很有帮助!:)看一看javadocs for(我的重点)
公共静态字符串到十六进制字符串(长i)
返回一个字符串
将长参数表示为基数为16的无符号整数
如果参数为,则无符号长值为参数加264
消极的否则,它等于论点。此值为
转换为十六进制(基16)的ASCII数字字符串,无
额外的前导0。如果无符号幅值为零,则表示该幅值
通过单个零字符“0”(“\u0030”);否则,第一个
无符号震级表示的字符将不可用
零字符
事实证明,它并不总是16个字符长。但是,如果您愿意,可以使用零填充:
import java.util.Random;
class Main {
public static void main(String[] args) {
String hex16Chars = String.format("%016X", new Random().nextLong());
System.out.println(hex16Chars + ", len: " + hex16Chars.length());
}
}
您将看到长度始终如预期的那样为16
而且事实证明,偷看文档确实有帮助!:) 您应该阅读
Long.tohextstring
的Javadoc,了解它返回的内容请注意Random.nextLong()不会在所有可能的Long值范围内生成随机Long,这意味着您可能不会以这种方式获得十六进制字符串的所有可能组合。这对你来说可能是个问题,也可能不是,但值得注意。这与我所问的机制无关,这里随机数的值并不重要,重要的是分配给它的空间;)您应该阅读Long.tohextstring
的Javadoc,了解它返回的内容请注意Random.nextLong()不会在所有可能的Long值范围内生成随机Long,这意味着您可能不会以这种方式获得十六进制字符串的所有可能组合。这对你来说可能是个问题,也可能不是,但值得注意。这与我所问的机制无关,这里随机数的值并不重要,重要的是分配给它的空间;)