繁体   English   中英

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

[英]Converting int to hex but not string

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

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

我的意思是快速的方式,如int.Tostring("X")但没有将int转换为字符串。

没有。

看这边。 那些有什么区别?

var i = 10;
var i = 0xA;

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

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

没有必要转换。 十号是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' - 四个单独的字符(或在某些编码中表示这些字符的字节)。 在整数的情况下,它存储为单个整数(以二进制形式编码)。

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

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

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

整数一百七十九(179)是十六进制中的B3,基数-10中的179,基-2中的10110011和碱-3中的20122。 数字的基数不会改变它的值。 B3,17,10110011和20122都是相同的数字,它们只是代表不同。 因此,只要你对同一基数中的数字进行数学运算,无论基数是什么,它们的基数都无关紧要。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM