C#将2个数字(INT)加入1个更长的INT中

时间:2012-07-07 12:18:51

标签: c#

这可能很有趣,但我真的不知道如何搜索找到这个答案。

当我想加入字符串时,我总是使用这样的东西“string =”something“+”somethingelse“”

但如何用INT做到这一点? :)

Random r = new Random();
int lvfirst = r.Next(485924948);
int lvsecond = r.Next(39);
int lvdone = lvfirst + lvsecond;
Globals.GlobalInt = lvdone;

我尝试做一个长整数但它似乎不起作用它说一些关于龙的东西所以如果你可以帮助我如何将这2个随机数加入1?我需要1个最大随机数“48592494839”

非常感谢!

4 个答案:

答案 0 :(得分:2)

此代码存在两个问题:

  1. “粘在一起”Next的两个输出不会在目标范围内给出随机值。数学不适用于字符串。
  2. 而不是返回结果,而是将其存储在全局变量中。
  3. 如果您想要指定范围内的值,请使用

    var result = (long) (r.NextDouble() * 48592494839);
    

    这对于任何目标范围仍然无效,但它可以轻松满足您的特定要求。

答案 1 :(得分:0)

你可以这样做:

Random r = new Random();
int lvfirst = r.Next(485924948);
int lvsecond = r.Next(39);
long lvdone = Int64.Parse(lvfirst.ToString() + lvsecond.ToString());
Globals.GlobalInt = lvdone;

基本上我们将所有ints转换为一个字符串,该字符串会将第二个数字附加到第一个数字的末尾,然后我们将其转换回int

希望这有帮助!

答案 2 :(得分:0)

您想添加或连接您的整数吗?

如果要连接,可以尝试:

long lvdone = long.Parse(lvfirst.toString() + lvsecond);

如果你想添加它们并避免溢出:

long lvdone = ((long) lvfist) + lvsecond

如果您的号码必须任意长,请尝试使用Decimal而不是long

答案 3 :(得分:-1)

忽略随机的事情...... 这是连接数字的方法......

int a = 124;
int b = 101040507;

int digits = 32;
mask = 0x80000000;
while(a & mask == 0)
{
    digits--;
    mask= mask >> 1;
}


long result = b;
result = result << digits;
result = result | b;