Issue #11215 has been updated by Usaku NAKAMURA.


あ、言い忘れましたが、j/Jはperlでは

    j  A Perl internal signed integer value (IV).
    J  A Perl internal unsigned integer value (UV).

だそうです。( http://perldoc.perl.org/functions/pack.html )

これはRubyのVALUEとはちょっと意味合いが違いますし、必ずしもポインタ幅でもないので、
本提案はperlのものとは意味がずれることになります。
が、perl独自幅の整数をRubyでサポートするはずはないので問題はないかと。

----------------------------------------
Feature #11215: pack/unpack for (u)intptr_t
https://bugs.ruby-lang.org/issues/11215#change-52725

* Author: Usaku NAKAMURA
* Status: Open
* Priority: Normal
* Assignee: 
----------------------------------------
以前にも似たようなものを提案したような気がしないでもないですが、
WindowsのAPIを叩いてるとどうしても必要になるので改めて提案します。

pack/unpackのテンプレート文字として、新たに、

  j: intptr_t, native endian
  J: uintptr_t, native endian

を追加することを提案します。

他のプラットフォームではlongがこれと一致することが多いためにあまり問題に
ならないようですが、WindowsではそうではないのでAPIを叩くたびに毎度苦労しています。
(そもそもAPIを叩く頻度もWindowsは他のプラットフォームより高そうな気がします)

パッチも用意したので添付しておきます。



---Files--------------------------------
pack_jJ.patch (10.5 KB)


-- 
https://bugs.ruby-lang.org/