如何将没有小数部分的双精度数转换为十六进制字符串(base-26)?
How to convert from a double without a fractional part to a hexaicosadecimal string (base-26)?
我想知道如何将没有小数部分的双精度字符串转换为十六进制字符串?转换的方法有哪些,有没有捷径?
据我了解,它只是以 26 为基数转换为字母,前缀为“c”。不确定负数的符号。
一个“捷径”是采用标准的 26 进制转换。
可以说自己进行转换同样容易,而且肯定会给
作业中更好的笔记。
static String hexaicosadecimal(double x) {
long n = (long)x;
String base26 = Long.toString(n, 26); // 0..9a.p
return "c" + base26.codePoints()
.map(cp -> '0' <= cp && cp <= '9' ? 'A' + (cp - '0')
: 'a' <= cp && cp < 'a' + 16 ? 'A' + 10 + (cp - 'a')
: cp) // '-'
.collect(StringBuilder::new,
StringBuilder::appendCodePoint,
StringBuilder::append)
.toString();
}
我想知道如何将没有小数部分的双精度字符串转换为十六进制字符串?转换的方法有哪些,有没有捷径?
据我了解,它只是以 26 为基数转换为字母,前缀为“c”。不确定负数的符号。
一个“捷径”是采用标准的 26 进制转换。 可以说自己进行转换同样容易,而且肯定会给 作业中更好的笔记。
static String hexaicosadecimal(double x) {
long n = (long)x;
String base26 = Long.toString(n, 26); // 0..9a.p
return "c" + base26.codePoints()
.map(cp -> '0' <= cp && cp <= '9' ? 'A' + (cp - '0')
: 'a' <= cp && cp < 'a' + 16 ? 'A' + 10 + (cp - 'a')
: cp) // '-'
.collect(StringBuilder::new,
StringBuilder::appendCodePoint,
StringBuilder::append)
.toString();
}