十进制的0x10是啥?

Posted

技术标签:

【中文标题】十进制的0x10是啥?【英文标题】:What is 0x10 in decimal?十进制的0x10是什么? 【发布时间】:2010-10-16 02:11:06 【问题描述】:

我有以下代码:

SN.get_Chars(5)

SN 是一个字符串,所以这应该是第 5 个字符。好的!

现在我有另一个代码但是:SN.get_Chars(0x10)

我想知道 0x10 是什么?是数字吗?如果是这样,那么十进制是什么?

【问题讨论】:

在谷歌中,输入“0x10 in decimal”。谷歌计算器将为您转换它们 您也可以使用 android 市场上的“Any Base Calculator”来执行此操作:play.google.com/store/apps/details?id=com.ewe.radixcalculator 程序员模式下也可以使用windows计算器! 呃...... 16? 【参考方案1】:

0xNNNN(不一定是四位数字)至少在 C 中表示一个十六进制数(基数为 16,因为在拉丁衍生语言中,'hex' 是 6,而 'dec' 是 10)数字,其中 N09AF 的数字之一(或它们的小写等效项,代表 10 到 15),并且数字中可能有 1 个或多个这些数字。表示它的另一种方式是 NNNN16

它在计算机世界中非常有用,因为一个十六进制数字代表四位(二进制数字)。这是因为四位,每一个都有两个可能的值,总共为您提供 2 x 2 x 2 x 216 (24) 个值。换句话说:

  _____________________________________bits____________________________________
 /                                                                             \
+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
| bF | bE | bD | bC | bB | bA | b9 | b8 | b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0 |
+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
 \_________________/ \_________________/ \_________________/ \_________________/ 
      Hex digit           Hex digit           Hex digit           Hex digit

以 X 为底的数是一个数字,其中每个位置代表 X 的幂的倍数。


在我们人类习惯的以 10 为底的情况下,使用的数字是 09,数字 730410 是:

(7 x 103) = 700010 ;加 (3 x 102) = 30010 ;加 (0 x 101) = 010 ;加 (4 x 100) = 410 ;等于 7304。

八进制,其中数字为07。数字 7548 是:

(7 x 82) = 44810 ;加 (5 x 81) = 4010 ;加 (4 x 80) = 410 ;等于 49210

C 中的八进制数字前面有字符 0,因此 0123 不是 123,而是 (1 * 64) + (2 * 8) + 3,或 83。


二进制,其中数字是01。数字 10112 是:

(1 x 23) = 810 ;加 (0 x 22) = 010 ;加 (1 x 21) = 210 ;加 (1 x 20) = 110 ;等于 1110

以十六进制表示,其中数字为 09AF(代表“数字”1015)。数字 7F2416 是:

(7 x 163) = 2867210 ;加 (F x 162) = 384010 ;加 (2 x 161) = 3210 ;加 (4 x 160) = 410 ;等于 3254810

你比较简单的数字0x10,也就是C代表1016的方式,就是:

(1 x 161) = 1610 ;加 (0 x 160) = 010 ;等于 1610

顺便说一句,不同的数字基数用于许多事情。

如前所述,我们手上有 10 个数字的人使用 base 10。 base 2 被计算机使用,因为用电路表示两个二进制状态相对容易。 base 8 几乎专门用于 UNIX 文件权限,因此每个八进制数字代表二进制权限的 3 元组(读/写/执行)。它还用于基于 C 的语言和 UNIX 实用程序中,用于将二进制字符注入到其他可打印字符的数据流中。 base 16 是一种将 4 位表示为一个数字的便捷方式,尤其是现在大多数架构的字长都是 4 位的倍数。 base 64 用于对邮件进行编码,以便可以仅使用可打印字符发送二进制文件。每个数字代表六个二进制数字,因此您可以将三个 8 位字符打包成四个 6 位数字(文件大小增加 25%,但保证可以不受影响地通过邮件网关)。 作为一个半有用的 sn-p,base 60 来自一些非常古老的文明(巴比伦、苏美尔、美索不达米亚或类似的东西),并且是 60 秒/分钟的分钟/小时,360 度的来源圆,60 分钟(弧),等等 [与计算机行业没有真正的关系,但仍然很有趣]。 作为一个更没用的 sn-p,The Hitchhikers Guide To The Galaxy 中的终极问题和答案是“当你将 6 乘以 9 时你会得到什么?”和“42”。虽然同样说这是因为地球计算机有故障,但其他人认为这是创造者有 13 个手指的证据:-)

【讨论】:

+1 表示彻底性和数学课,但不要忘记可怜的旧 base-2 ;-) 我不喜欢权威地谈论我知之甚少的事情。可能是巴比伦人、苏美尔人或美索不达米亚人——据我所知,你也可以说是伊拉克人。我会把它留给历史爱好者(我对古代历史的兴趣是足够的,但并不全面)。 伊拉克并不完全属于“古代历史”,因为它始建于 20 世纪 :-) @EddieD,我的意思是它们都在同一个区域。我想。我的地理比我的历史差得多:-) @Louis:我老了,年轻的学徒,但我不是 5000 岁 :-) 看看en.wikipedia.org/wiki/Sexagesimal - 他们似乎认为这是因为 60 有很多因素。【参考方案2】:

0x 表示数字是hexadecimal,或以 16 为基数。

0x10 是 16。

【讨论】:

【参考方案3】:

简单的版本是 0x 是一个前缀,表示一个十六进制数,source。

所以你计算的值是前缀之后,在这个例子中是10。

但这不是数字 10。最高有效位 1 表示十六进制值,而 0 表示单位。

所以你要做的简单数学是

0x10

1 * 16 + 0 = 16

注意 - 您使用 16 是因为十六进制是 16 基数。

另一个例子:

0xF7

15 * 16 + 7 = 247

您可以通过搜索十六进制表来获取值列表。例如在这个chart 通知中,F 对应于 15。

【讨论】:

【参考方案4】:

这是一个十六进制数,是十进制的 16。

【讨论】:

【参考方案5】:

请注意,“10”是该基数中基数的表示:

10 在 base-2 中是 2(十进制)

10 在 base-3 中是 3(十进制)

...

10 是以 10 为底的 10(十进制)

...

10 是 base-16(十六进制)中的 16(十进制)

...

10 是以 1024 为底的 1024(十进制)

...等等

【讨论】:

以上是关于十进制的0x10是啥?的主要内容,如果未能解决你的问题,请参考以下文章

python常用的十进制16进制字符串字节串之间的转换

此捆绑包无效 - Info.plist 中索引 327 处的 XML 字符“0x10”无效

python经常使用的十进制16进制字符串字节串之间的转换(长期更新帖)

python经常使用的十进制16进制字符串字节串之间的转换(长期更新帖)

在 C/C++ 中处理十六进制值

C语言 将99(十进制)转为0x99(十六进制)并输出?