C# 转换为十六进制补码
我得到了这样一个整数:C# 转换为十六进制补码,c#,integer,data-conversion,C#,Integer,Data Conversion,我得到了这样一个整数: int myInteger = 1234; int myInteger = 1234; string hexValueAsString = myInteger.ToString("X"); if (hexValueAsString.Length % 2 == 1) hexValueAsString = hexValueAsString.Insert(0, "0"); 我想得到的是匹配的十六进制符号2s补码应该与此类似: string hexValueAsStr
int myInteger = 1234;
int myInteger = 1234;
string hexValueAsString = myInteger.ToString("X");
if (hexValueAsString.Length % 2 == 1)
hexValueAsString = hexValueAsString.Insert(0, "0");
我想得到的是匹配的十六进制符号2s补码应该与此类似:
string hexValueAsString = "052C";
我尝试使用
.ToString(“X2”)
方法,但它并没有像我想象的那样工作
uint myInteger = 1234;
string hexValueAsString = myInteger.ToString("X2"); // 52C instead of 052C
我到底做错了什么? 任何帮助都将不胜感激
如果您事先知道需要的位数,可以明确指定:
string hexValueAsString = myInteger.ToString("X4");
如果没有,您可以这样做:
int myInteger = 1234;
int myInteger = 1234;
string hexValueAsString = myInteger.ToString("X");
if (hexValueAsString.Length % 2 == 1)
hexValueAsString = hexValueAsString.Insert(0, "0");
前导零被省略。通过对结果进行不同的格式化,您可能会得到您想要的结果(如果您希望最多4个位置,请尝试使用
X4
)。或者用来实现一个不错的动态填充。可能是@OlivierRogier的复制品,这篇文章似乎与手头的问题无关。我遗漏了什么吗?@AhmedAbdelhameed OP提到了“2s补码”,这不是简单地将int转换成十六进制字符串就能得到的。我只是不确定OP是否真的想要:“为了得到二进制数的两个补码,使用按位not运算将位反转或“翻转”;然后将值1添加到结果值中,忽略取两个补码0时发生的溢出。”。