我在PHP中有以下操作:
24733 * 0x41c64e6d + 0x6073;
...结果是:27293242579276
使用相同的逻辑,我在C#中执行相同的操作:
24733 * 0x41c64e6d + 0x6073;
但结果是:-1274586804
OMG,为什么?答案 0 :(得分:2)
默认情况下,当未指定显式强制转换时,c#将数字视为int
。
所以将24733视为int。
int x int + int = int
和Max int是2147483647,它小于27293242579276.这导致整数溢出。
要解决此问题,请使用位数较高的类型,例如decimal
你可以在数字的末尾附加一个字母“m”告诉c#你希望它是decimal
比如24733m * 0x41c64e6d + 0x6073
答案 1 :(得分:0)
在PHP中,这是正在发生的事情
var_dump
您可以通过执行budgetLineId
值
在64位版本中,最大整数为9223372036854775807.因此,PHP可以支持27293242579276提供的答案。基于另一个答案,看起来C#只是以不同方式转换数字,并且可能使用较低的最大整数。 / p>