C# 学习中遇到的问题,为了以后的应用。
就问题而言,理论上十六进制的11,12,13,取反加一,得到十六进制CA。
但使用C#中的进制转换,得到的是FFFFFFCA。
FFFFFFCA在科学计算器上是双字的结果,我只需要得到字节的结果就可以。
希望明白人士 给个提点,是我转换方法用得不对,还是其它的什么原因?
int a, b, c, result;
string s_result;
a = Convert.ToInt32("11", 16);
b = Convert.ToInt32("12", 16);
c = Convert.ToInt32("13", 16);
result = ~(a + b + c) + 1; //取反加1 结果 -54
s_result = result.ToString("X2"); //想得到字节方式的转换(CA),但出现的是双字的结果(FFFFFFCA)?!
------解决思路----------------------
为什么是双字? 因为你用了 int 啊, 结果转为 byte 或 sbyte 就行.
------解决思路----------------------
你把他们都用int(四个字节)来表示当然会这样了
int a, b, c;
string s_result;
a = Convert.ToInt32("11", 16);
b = Convert.ToInt32("12", 16);
c = Convert.ToInt32("13", 16);
var result = (byte)(~(a + b + c) + 1); //取反加1 结果