Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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# 将int转换为十六进制而不是字符串_C#_String_Int_Hex - Fatal编程技术网

C# 将int转换为十六进制而不是字符串

C# 将int转换为十六进制而不是字符串,c#,string,int,hex,C#,String,Int,Hex,现在我知道将int转换为hex很简单,但我这里有一个问题。 我有一个int,我想把它转换成十六进制,然后再加上另一个十六进制。 简单的解决方案是int.Tostring(“X”),但是在我的int变成十六进制之后,它也变成了string,所以在它再次变成int之前,我不能向它添加任何内容 所以我的问题是,;是否有一种方法可以将int转换为hex,并避免将其转换为string。我指的是一种快速方法,例如int.Tostring(“X”),但不需要将int转换为string。无需转换。数字十是十,用

现在我知道将int转换为hex很简单,但我这里有一个问题。 我有一个int,我想把它转换成十六进制,然后再加上另一个十六进制。 简单的解决方案是
int.Tostring(“X”)
,但是在我的int变成十六进制之后,它也变成了string,所以在它再次变成int之前,我不能向它添加任何内容


所以我的问题是,;是否有一种方法可以将int转换为hex,并避免将其转换为string。我指的是一种快速方法,例如
int.Tostring(“X”)
,但不需要将int转换为string。

无需转换。数字十是十,用二进制或十六进制写,是的,它们的表示形式会根据你们写它们的基数而不同,但值是相同的。因此,只需在整数中添加另一个整数,并在需要时将最终结果转换为十六进制字符串


举个例子。假设你有

int x = 10 + 10; // answer is 20 or 0x14 in Hex.
现在,如果你加上

int x = 0x0A + 0x0A; // x == 0x14
结果仍然是
0x14
。看到了吗

数值
10
0x0A
具有相同的值,只是它们写在不同的基中

尽管十六进制字符串是另一个野兽。 在上述情况下,可能是“0x14”。
对于计算机,这将存储为:
'0'、'x'、'1'、'4'
——四个独立的字符(或在某些编码中表示这些字符的字节)。如果是整数,则存储为单个整数(以二进制形式编码)。

我猜您遗漏了什么是十六进制,什么是整数。它们都表示一个数字。1、2、3、4等。。数字。有一种方法可以将数字视为自然数:INT和十六进制,但最后它们是相同的数字。例如,如果您有数字:5+5=10(int)和A(作为十六进制),但它是相同的数字。只是对他们的看法不同而已

我指的是一种快速的方法,比如
int.Tostring(“X”)
,但不使用int 变成了弦

不 看这边。它们之间有什么区别

var i = 10;
var i = 0xA;
作为一个值,它们完全相同。作为表示,第一个是,第二个是。您使用的
X
生成该数值的十六进制表示法

请注意,您可以随时将这个十六进制表示法字符串解析为整数


十六进制只是表示数字的一种方式。对于十进制数系统和二进制数系统也是如此,尽管除了一些定制的数字(BigNums etd)之外,所有数据都将以二进制形式存储,只要是整数(我指的整数不是浮点数)。您真正想做的可能是对整数执行计算,然后将它们打印为十六进制,这已在本主题中介绍过。简短的回答是:不,没有必要

整数一百七十九(179)在十六进制中是B3,在base-10中是179,在base-2中是10110011,在base-3中是20122。数字的基数不会改变它的值。B3、17、10110011和20122都是相同的数字,它们只是表示不同而已。所以,它们的基数是多少并不重要,只要你在同一个基数中对数字进行数学运算,基数是多少也不重要


因此,对于十六进制数,它们可以包含诸如“A”、“B”、“C”等字符。所以当你得到一个十六进制的值,如果它是一个数字,它将包含一个十六进制表示的字母,它将必须是一个字符串,因为字母不是整数。要实现您想要的功能,最好将两个数字都转换为常规整数,然后进行数学运算并在运算后转换为十六进制。这样做的原因是,如果您希望能够添加(或任何操作)看起来像十六进制的字符串,则需要更改字符串上所需运算符的行为,这是一个麻烦。

No;对整数进行数学运算,只在需要时创建十六进制字符串-通常在最后的输出阶段。考虑到十六进制值中包含字母字符,因此不能将十六进制值表示为字符串以外的任何值。使用整数表示进行操作,并将其转换为十六进制进行输出。好的。知道了。谢谢,计算机并不是真的用整数或十六进制来思考,它们用0和1来思考。其他任何东西都只是对当前值的解释。但是十六进制字符串远得多。我没有向下投票,但说“整数10在某种程度上也是十六进制”是自找麻烦。@doctorlove试图说明不需要转换,有人把代码写下来了这就是我目前正在做的。我只是想知道是否有一种方法可以将dec转换为十六进制而不必将其转换为十六进制string@JohnP. 没有必要。你有整数10,对吗?再加10。并将结果转换为十六进制字符串。我正在试验ReadProcessMemory。它的第一个参数(地址)是一个IntPtr。如果地址是十六进制格式或dec格式,这不是一个问题吗?@JohnP
IntPtr
是本机整数,据我所知,它的大小可以更改。老实说,我没有足够的信息来回答你的问题。