C#将2个数字(整数)合并为1个更长的整数
这可能很有趣,但我真的不知道如何寻找这个问题的答案 当我想连接字符串“string=”something“+”somethingelse”时,我总是使用类似的方法 但是如何使用INT来实现呢?:) 我试着做了一个长整型,但似乎不起作用,它说的是关于长的,所以如果你能帮我把这2个随机数合并成1?我需要1个最大值为“48592494839”的随机数C#将2个数字(整数)合并为1个更长的整数,c#,C#,这可能很有趣,但我真的不知道如何寻找这个问题的答案 当我想连接字符串“string=”something“+”somethingelse”时,我总是使用类似的方法 但是如何使用INT来实现呢?:) 我试着做了一个长整型,但似乎不起作用,它说的是关于长的,所以如果你能帮我把这2个随机数合并成1?我需要1个最大值为“48592494839”的随机数 非常感谢 您可以这样做: Random r = new Random(); int lvfirst = r.Next(485924948); int l
非常感谢 您可以这样做:
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;
基本上,我们将所有的int
转换为一个字符串,该字符串将第二个数字附加到第一个数字的末尾,然后我们将其转换回int
希望这有帮助 是否要添加或连接Int 如果要连接,可以尝试:
long lvdone = long.Parse(lvfirst.toString() + lvsecond);
如果要添加它们并避免溢出,请执行以下操作:
long lvdone = ((long) lvfist) + lvsecond
如果数字必须任意长,请尝试使用Decimal而不是long此代码有两个问题:
var result = (long) (r.NextDouble() * 48592494839);
这仍然不适用于任何目标范围,但它可以轻松满足您的特定要求。忽略随机因素。。。 这是连接数字的方法
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;
inta=124;
INTB=101040507;
整数位数=32;
掩码=0x8000000;
while(a&mask==0)
{
数字--;
掩码=掩码>>1;
}
长期结果=b;
result=result检查一下:那么你真正的意思是“我需要一个最大值为48592494839的随机数”,其余的只是为了确保你会得到错误的答案?485924948
小于Int32.MaxValue,即2147483647
@MatthewRz:我发誓我会多算一位数:)谢谢你的提醒,编辑以更正。我认为这是完美的谢谢你的代码和解释我不知道我有问题的代码=)!现在我有了另一个简短的问题var result=(long)(r.NextDouble()*48592494839);Globals.GlobalLong=结果代码>如果我想加或减这个值,我应该怎么做<代码>变量加总=结果+25代码>是否正常?1。这不是一个获得随机数的好方法,你得到的不会有任何熵。2.合并两个随机数确实会产生一个随机数。谢谢你的帮助,它看起来就像我的编码类型=),我喜欢它!
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;