方法一
x 为有符号十六进制数
y 为 x 对应的十进制数
int x = 0xffff;
int y = Convert.ToInt16(x.ToString("x2"), 16);
// 输出结果:y = -1;
方法二
x 为有符号十六进制数
int x = 0xffff;
if((Convert.ToInt32(x.ToString("x2"), 16)) > (Convert.ToInt32("7fff", 16)))
x = x - Convert.ToInt32("10000", 16);
// 输出结果:x = -1;
// ToString("x2") 转换为十六进制字符串
ToString("x2") 表示转换为十六进制为小写字母
ToString("X2") 表示转换为十六进制为大写字母