# NUM2xxx

**URL:** <https://www.ruby-forum.com/t/num2xxx/128675>\
**Category:** Development\
**Created:** [February 10, 2008, 9:48am UTC](https://www.ruby-forum.com/t/num2xxx/128675 "2008-02-10T09:48:59Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Tanaka\_A](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/c67d28/32.png) [@Tanaka\_A](https://www.ruby-forum.com/u/Tanaka_A)\
**Post date:** [February 10, 2008, 9:48am UTC](https://www.ruby-forum.com/t/num2xxx/128675/1 "2008-02-10T09:48:59Z")

</div>

e$B$U$He(B NUM2xxx e$B$,\<u$1IU$1$kCM$NHO0O$rD4$Y$?$s$G$9$,!"e(Bunsigned  
e$B$J$N$,Ii$NCM$r\<u$1IU$1$k$N$C$F$=$&$$$&$b$N$J$s$G$7$?$C$1e(B?

int = long = 32bit, long long = 64bit e$B$J4D6-e(B  
NUM2INT: -0x80000000 … 0x7fffffff  
NUM2UINT: -0x7fffffff … 0xffffffff  
NUM2LONG: -0x80000000 … 0x7fffffff  
NUM2ULONG: -0x7fffffff … 0xffffffff  
NUM2LL -0x8000000000000000 … 0x7fffffffffffffff  
NUM2ULL -0xffffffffffffffff … 0xffffffffffffffff

int = 32bit, long = long long = 64bit (LP64) e$B$J4D6-e(B  
NUM2INT: -0x80000000 … 0x7fffffff  
NUM2UINT: -0x7fffffffffffffff … 0xffffffff  
NUM2LONG: -0x8000000000000000 … 0x7fffffffffffffff  
NUM2ULONG: -0x7fffffffffffffff … 0xffffffffffffffff  
NUM2LL: -0x8000000000000000 … 0x7fffffffffffffff  
NUM2ULL: -0xffffffffffffffff … 0xffffffffffffffff

e$B$H$/$K!"e(BLP64 e$B$G$Ne(B NUM2UINT e$B$,e(B -0x7fffffffffffffff  
e$B$^$G\<u$1IUe(B  
e$B$1$k$N$O$+$J$jJQ$J5$$,$7$^$9!#e(B

e$B$J$\*!"0J2\<$N$h$&$K$7$Fe(B Ruby e$BB&$+$i8F$S=P$7$FD4$Y$^$7$?!#e(B

# Index: object.c

— object.c (revision 15422)  
+++ object.c (working copy)  
@@ -2322,6 +2322,12 @@ boot\_defclass(const char \*name, VALUE su

- 

```
                         +----------------+

```

\*/

+static VALUE num2int(VALUE \_, VALUE arg) { printf(“num2int:%d\n”,  
NUM2INT(arg)); return Qnil; }  
+static VALUE num2uint(VALUE \_, VALUE arg) { printf(“num2int:%u\n”,  
NUM2UINT(arg)); return Qnil; }  
+static VALUE num2long(VALUE \_, VALUE arg) { printf(“num2int:%ld\n”,  
NUM2LONG(arg)); return Qnil; }  
+static VALUE num2ulong(VALUE \_, VALUE arg) { printf(“num2int:%lu\n”,  
NUM2ULONG(arg)); return Qnil; }  
+static VALUE num2ll(VALUE \_, VALUE arg) { printf(“num2int:%lld\n”,  
NUM2LL(arg)); return Qnil; }  
+static VALUE num2ull(VALUE \_, VALUE arg) { printf(“num2int:%llu\n”,  
NUM2ULL(arg)); return Qnil; }

/\*

- `BasicObject` is the parent class of all classes in  
Ruby.  
@@ -2517,4 +2523,11 @@ Init\_Object(void)  
id\_match = rb\_intern("=~");  
id\_inspect = rb\_intern(“inspect”);  
id\_init\_copy = rb\_intern(“initialize\_copy”);

- 
- rb\_define\_global\_function(“NUM2INT”, num2int, 1);
- rb\_define\_global\_function(“NUM2UINT”, num2uint, 1);
- rb\_define\_global\_function(“NUM2LONG”, num2long, 1);
- rb\_define\_global\_function(“NUM2ULONG”, num2ulong, 1);
- rb\_define\_global\_function(“NUM2LL”, num2ll, 1);
- rb\_define\_global\_function(“NUM2ULL”, num2ull, 1);  
}

---

<div class="post-metadata">

**Author:** ![Tanaka\_A](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/c67d28/32.png) [@Tanaka\_A](https://www.ruby-forum.com/u/Tanaka_A)\
**Post date:** [July 3, 2008, 2:38pm UTC](https://www.ruby-forum.com/t/num2xxx/128675/2 "2008-07-03T14:38:24Z")

</div>

e$B$3$s$K$A$O!"$J$+$`$ie(B(e$B$&e(B)e$B$G$9!#e(B

In message “[ruby-dev:33683] NUM2xxx”  
on Feb.10,2008 17:47:51, [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> int = 32bit, long = long long = 64bit (LP64) e$B$J4D6-e(B  
> NUM2INT: -0x80000000 … 0x7fffffff  
> NUM2UINT: -0x7fffffffffffffff … 0xffffffff  
> NUM2LONG: -0x8000000000000000 … 0x7fffffffffffffff  
> NUM2ULONG: -0x7fffffffffffffff … 0xffffffffffffffff  
> NUM2LL: -0x8000000000000000 … 0x7fffffffffffffff  
> NUM2ULL: -0xffffffffffffffff … 0xffffffffffffffff
> 
> e$B$H$/$K!"e(BLP64 e$B$G$Ne(B NUM2UINT e$B$,e(B -0x7fffffffffffffff e$B$^$G\<u$1IUe(B  
> e$B$1$k$N$O$+$J$jJQ$J5$$,$7$^$9!#e(B

e$B8E$$OC$G$9$,!“e(BIRCe$B$G;XE&$5$l$?$N$G9M$($F$\_$^$7$?!#e(B  
e$B$H$j$”$($:!"e(BNUM2U\*e$B$,Ii$NCM$r\<u$1IU$1$k$N$O$=$&$$$&$b$N$@$H2\>e(B  
e$BDj$7$F!“e(BLP64e$B$Ne(BNUM2UINTe$B$@$1BP:v$9$k$H!”$3$s$J$b$s$G$7$g$&$+e(B?

# Index: numeric.c

— numeric.c (revision 17790)  
+++ numeric.c (working copy)  
@@ -1585,10 +1585,10 @@ check\_int(SIGNED\_VALUE num)  
}

static void  
-check\_uint(VALUE num)  
+check\_uint(VALUE num, int sign)  
{  
if (num \> UINT\_MAX) {

- rb\_raise(rb\_eRangeError, "integer %“PRIuVALUE " too big to convert to  
`unsigned int’”, num);

- rb\_raise(rb\_eRangeError, "integer %“PRIuVALUE " too %s to convert to  
`unsigned int’”, sign ? “small” : “big”, num);  
}  
}

@@ -1615,9 +1615,7 @@ rb\_num2uint(VALUE val)  
{  
unsigned long num = rb\_num2ulong(val);

- if (RTEST(rb\_funcall(INT2FIX(0), ‘\<’, 1, val))) {
- check\_uint(num);
- }

- check\_uint(num, RTEST(val, ‘\<’, 1, rb\_funcall(INT2FIX(0))));  
return num;  
}

e$B$=$l$G$O!#e(B

---

<div class="post-metadata">

**Author:** ![Tanaka\_A](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/c67d28/32.png) [@Tanaka\_A](https://www.ruby-forum.com/u/Tanaka_A)\
**Post date:** [July 3, 2008, 6:31pm UTC](https://www.ruby-forum.com/t/num2xxx/128675/3 "2008-07-03T18:31:39Z")

</div>

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:35341] Re: NUM2xxx”  
on Thu, 3 Jul 2008 21:34:31 +0900, “U.Nakamura”  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) writes:

|In message “[ruby-dev:33683] NUM2xxx”  
| on Feb.10,2008 17:47:51, [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:  
|\> e$B$U$He(B NUM2xxx e$B$,\<u$1IU$1$kCM$NHO0O$rD4$Y$?$s$G$9$,!"e(Bunsigned  
|\> e$B$J$N$,Ii$NCM$r\<u$1IU$1$k$N$C$F$=$&$$$&$b$N$J$s$G$7$?$C$1e(B?

|\> e$B$H$/$K!"e(BLP64 e$B$G$Ne(B NUM2UINT e$B$,e(B -0x7fffffffffffffff e$B$^$G\<u$1IUe(B  
|\> e$B$1$k$N$O$+$J$jJQ$J5$$,$7$^$9!#e(B  
|  
|e$B8E$$OC$G$9$,!“e(BIRCe$B$G;XE&$5$l$?$N$G9M$($F$\_$^$7$?!#e(B  
|e$B$H$j$”$($:!"e(BNUM2U\*e$B$,Ii$NCM$r\<u$1IU$1$k$N$O$=$&$$$&$b$N$@$H2\>e(B  
|e$BDj$7$F!“e(BLP64e$B$Ne(BNUM2UINTe$B$@$1BP:v$9$k$H!”$3$s$J$b$s$G$7$g$&$+e(B?

e$B$9$C$+$jK:$l$F$^$7$?!#e(B  
NUM2Uxxxe$B$,Ii$NCM$r\<u$1$$$l$k$N$O!“$J$s$+M}M3$,$”$C$?$h$&$J5$e(B  
e$B$,$9$k$N$G!“$”$H$G9M$($k$H$7$Fe(B(e$B$C$F$^$?K:$l$=$&e(B)e$B!"e(BLP64e$B$N%Q%Ce(B  
e$B%A$O%3%\_%C%H$7$F$$$?$@$1$^$;$s$+!)e(B

---

<div class="post-metadata">

**Author:** ![Tanaka\_A](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/c67d28/32.png) [@Tanaka\_A](https://www.ruby-forum.com/u/Tanaka_A)\
**Post date:** [July 3, 2008, 7:27pm UTC](https://www.ruby-forum.com/t/num2xxx/128675/4 "2008-07-03T19:27:22Z")

</div>

e$B$3$s$K$A$O!"$J$+$`$ie(B(e$B$&e(B)e$B$G$9!#e(B

In message “[ruby-dev:35344] Re: NUM2xxx”  
on Jul.04,2008 01:27:51, [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:  
| |\> e$B$H$/$K!"e(BLP64 e$B$G$Ne(B NUM2UINT e$B$,e(B -0x7fffffffffffffff e$B$^$G\<u$1IUe(B  
| |\> e$B$1$k$N$O$+$J$jJQ$J5$$,$7$^$9!#e(B  
| |  
| |e$B8E$$OC$G$9$,!"e(BIRCe$B$G;XE&$5$l$?$N$G9M$($F$_$^$7$?!#e(B  
| |e$B$H$j$“$($:!“e(BNUM2U\*e$B$,Ii$NCM$r\<u$1IU$1$k$N$O$=$&$$$&$b$N$@$H2\>e(B  
| |e$BDj$7$F!“e(BLP64e$B$Ne(BNUM2UINTe$B$@$1BP:v$9$k$H!”$3$s$J$b$s$G$7$g$&$+e(B?  
|  
| e$B$9$C$+$jK:$l$F$^$7$?!#e(B  
| NUM2Uxxxe$B$,Ii$NCM$r\<u$1$$$l$k$N$O!”$J$s$+M}M3$,$”$C$?$h$&$J5$e(B  
| e$B$,$9$k$N$G!“$”$H$G9M$($k$H$7$Fe(B(e$B$C$F$^$?K:$l$=$&e(B)e$B!"e(BLP64e$B$N%Q%Ce(B  
| e$B%A$O%3%_%C%H$7$F$$$?$@$1$^$;$s$+!)e(B

e$B$J$s$+@h$KE:IU$7$?%Q%C%A$O$@$$$V4V0c$C$F$^$7$?$,e(B(e$B%3%s%Q%$%k3Ne(B  
e$BG’A0$N;~E@$N$rE=$C$F$7$^$C$?e(B)e$B!"$=$l$bD\>$7$F%3%\_%C%H$7$^$7$?!#e(B

e$B%F%9%H$bF~$l$?$$$s$G$9$,!"$I$&$7$?$b$s$@$m$&e(B?

e$B$=$l$G$O!#e(B
