Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 转换为十六进制补码_C#_Integer_Data Conversion - Fatal编程技术网

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时发生的溢出。”。