Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#将2个数字(整数)合并为1个更长的整数_C# - Fatal编程技术网

C#将2个数字(整数)合并为1个更长的整数

C#将2个数字(整数)合并为1个更长的整数,c#,C#,这可能很有趣,但我真的不知道如何寻找这个问题的答案 当我想连接字符串“string=”something“+”somethingelse”时,我总是使用类似的方法 但是如何使用INT来实现呢?:) 我试着做了一个长整型,但似乎不起作用,它说的是关于长的,所以如果你能帮我把这2个随机数合并成1?我需要1个最大值为“48592494839”的随机数 非常感谢 您可以这样做: Random r = new Random(); int lvfirst = r.Next(485924948); int l

这可能很有趣,但我真的不知道如何寻找这个问题的答案

当我想连接字符串“string=”something“+”somethingelse”时,我总是使用类似的方法

但是如何使用INT来实现呢?:)

我试着做了一个长整型,但似乎不起作用,它说的是关于长的,所以如果你能帮我把这2个随机数合并成1?我需要1个最大值为“48592494839”的随机数


非常感谢

您可以这样做:

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

此代码有两个问题:

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

    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;