【发布时间】:2020-10-04 19:08:26
【问题描述】:
我的问题是关于 Java 的。
如何使用 Java 7 在 Java 中将十进制(Base 10)转换为十六进制(Base 16)?
当我在 C# 中使用带有字符串“BQoPFBke”的 Convert.FromBase64String(str) 方法时,我得到结果:05-0A-0F-14-19-1E
但是当我在 Java 中使用具有相同字符串的 Base64.Decoder.decode(str) 方法时,我得到的结果是:[5, 10, 15, 20, 25, 30]
我尝试将十进制转换为十六进制:
public static String decimal2hex(int d) {
String digits = "0123456789ABCDEF";
if (d <= 0) return "0";
int base = 16; // flexible to change in any base under 16
String hex = "";
while (d > 0) {
int digit = d % base; // rightmost digit
hex = digits.charAt(digit) + hex; // string concatenation
d = d / base;
}
return hex;
}
但是当我使用例如 decima2hex(15) 时,该方法仅返回:F。但我需要得到:0F。
如何做到这一点?
【问题讨论】:
-
那么问Java还是c#?当你添加标签时,你应该完成句子“我的问题是关于......”。
-
在 c# 中,你不会得到你发布的破折号,你会得到一个与 Java 相同的字节数组。您只是将 c# 中的结果视为十六进制数字,但它仍然是相同的数字。