如何在c++中拆分无符号长



我将一个十六进制数字传递到一个无符号长函数中,假设该数字为0x5ED3710573047010。当我显示这个数字时,它是以十进制形式显示的,而不是十六进制。我想知道的是,当值被分配给这个变量时,它是在分配给变量时从十六进制转换为十进制,还是仅仅是cout导致它以十进制格式显示?如果我想把这个十六进制数字分成两部分,最好的方法是什么?我应该将它转换成一个字符串并拆分字符串,然后将这两个字符串转换回Int并将其存储在两个单独的变量中吗?还是有一些简单快捷的方法?

当我显示这个数字时,它以十进制形式显示,而不是十六进制。我想知道的是,当值被分配给这个变量时,它是在分配给变量时从十六进制转换为十进制,还是仅仅是cout导致它以十进制格式显示?

C++中的所有数字都以基数(也称为基数(2表示,即二进制。它从来不是基数10(十进制(也不是基数16(十六进制(。

当您输入一个整数时,您编写的文本会被解析,根据您用于输入的函数,通常整数的前缀决定了文本的解释方式。前缀0x表示十六进制,0表示八进制,否则文本将被解释为十进制。该过程的结果是存储在存储器中的非文本二进制表示。除了值之外,该值不包含任何关于文本表示的信息,例如基数。

当编译器解释包含整数文本的源代码(即文本(时,上述相同的解析也适用。

当您将整数输出为文本时,默认行为是以十进制显示文本表示。这通常是可以控制的,这取决于您使用什么函数来进行输出。

最新更新