无法在C#中将long转换为int问题

时间:2015-04-02 09:42:58

标签: c# parsing int64

在下面的代码中我想在数字之前添加0(即)如果数字是96333则应该是096333当我执行它时我面临的问题是无法将long转换为int.Pls帮助我解决问题。< / p>

  public FileDto GenerateBarcodeImage(Int64 BarCodeNumber)
    {
        //string s = BarCodeNumber.ToString().PadLeft(4, '0');
        string result = BarCodeNumber.ToString().PadLeft(4, '0');
        int sds = Int64.Parse(result);
        return GetBarcodeImage(sds);
    }

3 个答案:

答案 0 :(得分:0)

替换

int sds = Int64.Parse(result);

long sds = Int64.Parse(result);

答案 1 :(得分:0)

试试这个:

int sds = Int32.Parse(result);

而不是

int sds = Int64.Parse(result);

正如Mr47在将数字解析回Int64时正确指出的那样,你将丢失左边的所有零。

答案 2 :(得分:0)

longint更准确。隐式转换只能从较低到较高的精度进行,因为不存在丢失信息的风险(因为int中的long的最小和最大值可以很容易地包含在int中。

如果您的值可能大于GetBarcodeImage的容量,请将sds的类型更改为Int64。我认为您的函数Int64会将integer作为参数,如果不是,您可能也想更改它。

如果您的值可以包含在GenerateBarcodeImage中,请更改您的int函数以及{{1}}作为参数。

仔细考虑将数字转换为较低精度的后果。请阅读story of the first Ariane 5 launch了解详情。