当我尝试比较2个Long变量时,我遇到了一个非常奇怪的问题,它们总是显示为false,我可以通过Eclipse中的调试确定它们具有相同的数值:
if (user.getId() == admin.getId()) {
return true; // Always enter here
} else {
return false;
}
Run Code Online (Sandbox Code Playgroud)
以上两个返回值都是对象类型的Long,这让我很困惑.并验证我写了一个这样的主方法:
Long id1 = 123L;
Long id2 = 123L;
System.out.println(id1 == id2);
Run Code Online (Sandbox Code Playgroud)
它打印真实.
有人可以给我一些想法吗?我已经在Java Development工作了3年但是无法解释这个案例.
我有一堆十六进制字符串,其中一个,例如:
d1bc4f7154ac9edb
Run Code Online (Sandbox Code Playgroud)
这是十六进制值"-3333702275990511909".如果你做Long.toHexString("d1bc4f7154ac9edb"),这是你得到的相同的十六进制;
现在,让我们假设我只能访问十六进制字符串值,就是这样.这样做:
Long.parseLong(hexstring, 16);
Run Code Online (Sandbox Code Playgroud)
不起作用,因为它将它转换为对Long来说太大的不同值.是否可以将这些无符号十六进制值转换为有符号长整数?
谢谢!
这就是我所拥有的:
<td style='width:500px; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;'>
如何将Long转换为base36?您的回答可以解释您是如何得出答案的?
我已经检查了scaladocs for Long转换为不同的基础,以及将Long转换为BigInt.我看到BigInt确实有toString( base )这样的解决方案可能涉及改变类型,但我无法弄清楚如何.
注意:我是scala/java/type-safe语言的新手,所以我可能会忽略一些微不足道的东西.
我应该如何执行从IPv6到long的转换,反之亦然?
到目前为止,我有:
public static long IPToLong(String addr) {
String[] addrArray = addr.split("\\.");
long num = 0;
for (int i = 0; i < addrArray.length; i++) {
int power = 3 - i;
num += ((Integer.parseInt(addrArray[i], 16) % 256 * Math.pow(256, power)));
}
return num;
}
public static String longToIP(long ip) {
return ((ip >> 24) & 0xFF) + "."
+ ((ip >> 16) & 0xFF) + "."
+ ((ip >> 8) & 0xFF) + "."
+ (ip & 0xFF);
} …Run Code Online (Sandbox Code Playgroud) 我试过(int) "4209531264",intval("4209531264")
但遗憾的是我得到的是2147483647(我意识到这是因为32位架构或某些PHP依赖或其他东西).
我想出了"4209531264" + 0它会返回正确的结果,但令人惊讶的是它看起来有效,因为它超出了maxint.
但真正的问题是:这是将字符串转换为long的"正确方法"吗?
编辑:
(float) 那是.
谢谢你的评论!眼睛开放!
当我指定一个long具有常数值的数字时400,使用400L和之间是否有任何区别400l?
它与包装类型有一些关系吗?被L用来获取的包装Long,并l为原始数据类型long?
杰克逊序列化长x = 1234到{x:1234}由于几个原因,我需要{x:"1234"}
任何杰克逊注释?
谢谢.
如何从long long转换为int,另一种转换回c ++?也有长长的特性,特别是它的最大尺寸,谢谢提前..
我无法将长(美分)转换成货币格式.
我的代码:
long doublePayment = 1099; //Should equal $10.99
DecimalFormat dFormat = new DecimalFormat();
String formattedString = dFormat.format(doublePayment);
System.out.println(formattedString);
Run Code Online (Sandbox Code Playgroud)
产量:1,099
我也尝试过:
long doublePayment = 1099;
NumberFormat n = NumberFormat.getCurrencyInstance(Locale.US);
String s = n.format(doublePayment);
System.out.println(s);
Run Code Online (Sandbox Code Playgroud)
由于这是美分,输出应为10.99或10.99美元.
无法弄清楚我做错了什么.谢谢!!!