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

本文关键字:转换 字符串 十六进制 int | 更新日期: 2023-09-27 18:36:49

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

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

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

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

不。

这样看。它们之间有什么区别?

var i = 10;
var i = 0xA;

作为一个值,它们是完全相同的。作为表示,第一个是十进制表示法,第二个是十六进制表示法。使用十六进制格式说明符X,说明符生成数值的十六进制表示法。

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

  • C# 将整数转换为十六进制并再次转换回来

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


举个例子。假设你有

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

现在,如果您添加了

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

结果仍然会0x14。看?

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

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

我想你错过了什么是十六进制和什么是 INT。它们代表一个数字。1、2、3、4 等。数字。有一种方法可以查看数字:作为自然数:INT 和十六进制 - 但最后它们是相同的数字。例如,如果您有数字:5 + 5 = 10(整数)和 A(十六进制),但它的数字相同。只是对它们的看法是不同的

十六进制只是表示数字的一种方式。同样的陈述也适用于十进制数系统和二进制,尽管除了一些定制的数字(BigNums etd)之外,只要它的整数(整数我的意思不是浮点数),所有内容都将存储为二进制。您真正想做的可能是对整数执行计算,然后将它们打印为十六进制,本主题中已经介绍了 C# 将整数转换为十六进制并再次返回

简短的回答:不,也没有必要。

整数 179 (179) 以十六进制表示 B3,以 10 为底为 179,以 2 为底10110011,以 3 为底为 20122。数字的基数不会更改其值。B3、17、10110011 和 20122 都是相同的数字,只是表示不同。因此,只要您对同一基数中的数字进行数学运算,它们在什么基数上并不重要,底数是什么并不重要。

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