none
有符号和无符号数据如何转换 RRS feed

答案

  • 你是指這樣嗎?!

    2017年5月15日 14:30
  • Hi,

    你有尝试使用Convert.ToUInt32 方法和Convert.ToUInt32

    这俩个函数就是实现无符号和有符号数的转换,我使用了上面链接中的代码,进行了测试。 在转换的时候,会出现访问内存越界的情况。

    Best Regards,

    Hart


    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2017年5月16日 7:18
    版主

全部回复

  • 你是指這樣嗎?!

    2017年5月15日 14:30
  • Hi,

    你有尝试使用Convert.ToUInt32 方法和Convert.ToUInt32

    这俩个函数就是实现无符号和有符号数的转换,我使用了上面链接中的代码,进行了测试。 在转换的时候,会出现访问内存越界的情况。

    Best Regards,

    Hart


    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2017年5月16日 7:18
    版主
  • Hi,

    你有尝试使用Convert.ToUInt32 方法和Convert.ToUInt32

    这俩个函数就是实现无符号和有符号数的转换,我使用了上面链接中的代码,进行了测试。 在转换的时候,会出现访问内存越界的情况。

    Best Regards,

    Hart


    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    哪个链接的代码?那个问题我已经解决了,使用的是这个  ulong temp = ulong.Parse(Id);       long r = (long)temp;

    是将无符号长整型转换为有符号长整型。


    dolphin_gjh

    2017年5月19日 1:40
  • Hi,

    你有尝试使用Convert.ToUInt32 方法和Convert.ToUInt32

    这俩个函数就是实现无符号和有符号数的转换,我使用了上面链接中的代码,进行了测试。 在转换的时候,会出现访问内存越界的情况。

    Best Regards,

    Hart


    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    你说的这个错误我也是遇到了,是将有符号转换为无符号的时候出这个异常,不知道怎么回事儿。

    dolphin_gjh

    2017年5月19日 1:41
  • 你是指這樣嗎?!

    我的意思是任意一个无符号或者有符号数值之间的相互转换。无符号转有符号的时候没问题,有符号的负数转换为无符号的时候就报异常。

    dolphin_gjh


    2017年5月19日 1:42
  • Hi,

    代码是在Convert.toUInt32方法里面。

    具体代码如下:

    int[] numbers = { Int32.MinValue, -1203, 0, 121, 1340, Int32.MaxValue };
    uint result;
    foreach (int number in numbers)
    {
       try {
          result = Convert.ToUInt32(number);
          Console.WriteLine("Converted the {0} value {1} to the {2} value {3}.",
                            number.GetType().Name, number,
                            result.GetType().Name, result);
       }
       catch (OverflowException) {
          Console.WriteLine("The {0} value {1} is outside the range of the UInt32 type.",
                            number.GetType().Name, number);
       }
    }

    代码是出现在:有符号的负数转换成无符号的输时,就会出现访问内存出界的问题.  个人认为,访问的负数的范围是

    正负32768,而无符号的数 是0—65536,所以转换的时候,就出现范围越界,上面例子正对int来说。

    Best Regards,

    Hart


    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2017年5月19日 1:53
    版主