问个进制显示 转换的问题
最近在做个接口 按照接口说明书上其中一段话
public static string CHKSUM(string str)
{
ushort sum = 0;
System.Text.ASCIIEncoding asciiEncoding = new System.Text.ASCIIEncoding();
byte[] byteArr = asciiEncoding.GetBytes(str);
foreach (byte c in byteArr)
{
sum += c;
}
return (~(sum % 65535) + 1).ToString("X2");
}
//调用这个方法
CHKSUM("1203400456ABCDFE"); 结果返回的是 FFFFFC72
我想得到的直接就是 "FC72"
虽然我可以硬截取后4位 但是我想有没有更好的办法 比如什么单字节 双字节之类的?
.ToString("X1") 尝试过这样 不起作用
------解决方案--------------------~(sum % 65535) + 1
问题在这里,结果已经转成int了
另外,既然你sum定义的是ushort (0~65535),而且你说的是模65536,这里干什么还多此一举的%呢,而且还是个错的值
按你说的,sum(ushort)模65536(10000H)余数取反加1
----> (ushort)(~sum + 1u)
------解决方案--------------------string s = "FFFFFC72".TrimStart('F');