我似乎无法找到将sbyte转换回原始整数值的方法。
int k = 148;
sbyte t = (sbyte)k;
int asd = Convert.ToInt32(t);
asd的值是-108。如何将sbyte转换回int以获得原始值148?
由于
答案 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
。
int k = 148;
sbyte t = (sbyte)k;
byte b=(byte)t;
Console.WriteLine(b);
Console.WriteLine();
int asd = Convert.ToInt32(b);
Console.WriteLine(asd);