将int转换为十六进制但不是字符串

时间:2016-03-01 13:46:09

标签: c# string int hex

现在我知道将int转换为十六进制很简单,但我有一个问题。 我有一个int,我想将其转换为十六进制,然后添加另一个十六进制。 简单的解决方案是int.Tostring("X")但是在我的int转为十六进制之后,它也被转换为字符串,所以我不能添加任何东西,直到它再次转回int。

所以我的问题是;有没有办法将int转换为十六进制,并避免将其转换为字符串。我的意思是一种快速的方式,例如int.Tostring("X")但没有将int转换为字符串。

5 个答案:

答案 0 :(得分:3)

  

我的意思是一种快速的方式,例如int.Tostring("X"),但没有int   转向字符串。

没有

看看这种方式。这些之间有什么区别?

var i = 10;
var i = 0xA;

作为一个值,它们完全相同。作为表示,第一个是decimal notation,第二个是hexadecimal notation。您使用的X hexadecimal format specifier生成 数值的十六进制表示法。

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

答案 1 :(得分:2)

无需转换。十号是10,用二进制或十六进制写,是的,它们的表示会有所不同,这取决于你写它们的基数但值是相同的。所以只需在整数中添加另一个整数 - 并在需要时将最终结果转换为十六进制字符串。

举个例子。假设你有

int x = 10 + 10; // answer is 20 or 0x14 in Hex.

现在,如果你添加了

int x = 0x0A + 0x0A; // x == 0x14

结果仍为0x14。见

数字100x0A具有相同的值,只是它们以不同的基础编写。

十六进制字符串虽然是一个不同的野兽。 在上述情况下,可能是" 0x14"。 对于计算机,这将存储为:'0', 'x', '1', '4' - 四个单独的字符(或在某些编码中表示这些字符的字节)。在整数的情况下,它存储为单个整数(以二进制形式编码)。

答案 2 :(得分:1)

我猜你错过了什么是HEX以及什么是INT。他们代表一个数字。 1,2,3,4等数字。有一个方式来查看数字:作为自然数:INT和十六进制 - 但最后这些是相同的数字。例如,如果您有数字:5 + 5 = 10(int)和A(作为十六进制)但它的数字相同。只是看他们是不同的

答案 3 :(得分:1)

Hex只是表示数字的一种方式。对于十进制数字系统和二进制数字也是如此,尽管除了一些自定义数字(BigNums etd)之外,只要其整数(通过整数表示不是浮点数),所有内容都将存储为二进制。你真正想做的是对整数进行计算,然后将它们打印为Hex,这已在本主题中进行了描述C# convert integer to hex and back again

答案 4 :(得分:1)

答案简短:不,没有必要。

整数一百七十九(179)是十六进制的B3,基数为10的179,基-2的10110011和基三的20122。数字的基数不会改变它的值。 B3,17,10110011和20122都是相同的数字,它们只是代表不同。因此,只要你对同一基数中的数字进行数学运算就没那么重要,它与基数是什么并不重要。

因此,在您使用十六进制数字的情况下,它们可以包含诸如' A',' B' C'等等字符。因此,当你得到一个十六进制的值时,如果它是一个在十六进制表示中包含一个字母的数字,那么它必须是一个字符串,因为字母不是整数。要做你想做的事情,最好将两个数字转换为常规的int然后再做数学并转换为Hex。这样做的原因是,如果你希望能够添加(或任何操作)它们看起来像十六进制,你将需要在字符串上更改所需操作符的行为,这是一个麻烦。