在c#中将Sbyte转换为整数

时间:2014-08-26 05:43:42

标签: c#

我似乎无法找到将sbyte转换回原始整数值的方法。

int k = 148;
sbyte t = (sbyte)k;
int asd = Convert.ToInt32(t);

asd的值是-108。如何将sbyte转换回int以获得原始值148?

由于

3 个答案:

答案 0 :(得分:2)

假设您希望结果在0-255范围内,最简单的方法是:

int asd = t & 0xff;

这会将k提升为int,然后只取最低8位,将所有前24位保留为0。

但是,我首先要问你为什么希望使用sbyte。它非常非常很少是一个好主意 - Java的一个设计缺陷(在我看来)是使byte成为签名类型。如果要表示字节值,byte会更合适。

答案 1 :(得分:0)

sbyte保存-128到127之间的值,因为第一位表示加号或减号。 首先将你的sbyte转换为byte,然后转换为int。

        int k = 148;
        sbyte t = (sbyte)k;
        int asd = (int)(byte)k;
        Assert.AreEqual(148, asd);

答案 2 :(得分:0)

由于sbyte在-128到127的范围内,理想情况下,当返回值介于0-255之间时,现有方法不应返回sbyte。

但无论如何,您可以先尝试将sbyte转换为byte,然后转换为int

我想following code should work

int k = 148;
sbyte t = (sbyte)k;
byte b=(byte)t;

Console.WriteLine(b);
Console.WriteLine();

int asd = Convert.ToInt32(b);       
Console.WriteLine(asd);