# '\*' parameter in pack format 'M', 'm', or 'P' acts oddly

**URL:** <https://www.ruby-forum.com/t/parameter-in-pack-format-m-m-or-p-acts-oddly/155024>\
**Category:** Development\
**Created:** [December 6, 2008, 1:38pm UTC](https://www.ruby-forum.com/t/parameter-in-pack-format-m-m-or-p-acts-oddly/155024 "2008-12-06T13:38:02Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Yugui\_SYuki\_S.S](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/y/dec6dc/32.png) [@Yugui\_SYuki\_S.S](https://www.ruby-forum.com/u/Yugui_SYuki_S.S)\
**Post date:** [December 6, 2008, 1:38pm UTC](https://www.ruby-forum.com/t/parameter-in-pack-format-m-m-or-p-acts-oddly/155024/1 "2008-12-06T13:38:02Z")

</div>

Yuguiã§ã™ã€‚

Array#packã«ãŠã„ã¦ã€"M"ã‚„"m"ã¯å‡ºåŠ›ã®1è¡Œã®é•·ã•ã‚’ã€  
"P"ã¯å¯¾å¿œã™ã‚‹æ–‡å­—åˆ—(ãƒã‚¤ãƒˆåˆ—)ã®é•·ã•ã‚’è¡¨ã—ã¾ã™ã€‚

ã«ã‚‚ã‹ã‹ã‚ã‚‰ãšã€"M\*"ã‚„“m\*”, "P\*"ã‚’æŒ‡å®šã™ã‚‹ã¨ã‚¢ã‚¹ã‚¿ãƒªã‚¹ã‚¯ãŒä»–ã®ãƒ•ã‚©ãƒ¼ãƒžãƒƒ  
ãƒˆã«ãŠã‘ã‚‹å ´åˆåŒã˜ãä½™ã£ã¦ã„ã‚‹é…åˆ—è¦ç´ ã®å€‹æ•°ã«å±•é–‹ã•ã‚Œã¾ã™ã€‚

çµæžœã¨ã—ã¦ã€ä½•ã ã‹å¦™ãªæŒ™å‹•ã«ãªã‚Šã¾ã™ã€‚  
["abc"_5, “d”, “e”, “f”].pack('m_’)  
#=\> “YWJj\nYWJj\nYWJj\nYWJj\nYWJj\n”  
["abc"_5, “d”, “e”, “f”, “g”, “h”].pack('m_’)  
#=\> “YWJjYWJj\nYWJjYWJj\nYWJj\n”

[“a”].pack(“P\*”) #=\> “\220\a9\001”  
[“a”, “b”].pack(“P\*”) #=\> ArgumentError: too short buffer for P(1 for 2)

ã“ã®3ã¤ã®ãƒ•ã‚©ãƒ¼ãƒžãƒƒãƒˆã§ã¯ã‚¢ã‚¹ã‚¿ãƒªã‚¹ã‚¯ã¯å˜ã«ç„¡è¦–ã™ã‚‹ã®ãŒè‰¯ã„ã®ã§ã¯ãªã„ã‹  
ã¨æ€ã„ã¾ã—ã¦ã€æ·»ä»˜ã®ã‚ˆã†ãªä¿®æ­£ã‚’æ›¸ã„ã¦ã¿ã¾ã—ãŸã€‚ã„ã‹ãŒã§ã—ã‚‡ã†?

---

<div class="post-metadata">

**Author:** ![Yugui\_SYuki\_S.S](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/y/dec6dc/32.png) [@Yugui\_SYuki\_S.S](https://www.ruby-forum.com/u/Yugui_SYuki_S.S)\
**Post date:** [December 8, 2008, 2:17pm UTC](https://www.ruby-forum.com/t/parameter-in-pack-format-m-m-or-p-acts-oddly/155024/2 "2008-12-08T14:17:40Z")

</div>

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

In message “Re: [ruby-dev:37289] ‘\*’ parameter in pack format ‘M’, ‘m’,  
or ‘P’ acts oddly”  
on Sat, 6 Dec 2008 21:29:36 +0900, “Yugui (Yuki S.)”  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) writes:

|Yuguie$B$G$9!#e(B  
|  
|Array#packe$B$K$_$$$F!"e(B"M"e$B$de(B"m"e$B$O=PNO$Ne(B1e$B9T$ND9$5$r!"e(B  
|"P"e$B$OBP1~$9$kJ8;zNse(B(e$B%P%$%HNse(B)e$B$ND9$5$rI=$7$^$9!#e(B  
|  
|e$B$K$b$+$+$o$i$:!"e(B"M_"e$B$de(B"m\*“, “P\*“e$B$r;XDj$9$k$H%”%9%?%j%9%/$,B\>$N%U%)!\<%^%Ce(B  
|e$B%H$K$_$1$k\>l9gF1$8$/M\>$C$F$$$kG[NsMWAG$N8D?t$KE83+$5$l$^$9!#e(B  
|  
|e$B7k2L$H$7$F!"2?$@$+L/$J5sF0$K$J$j$^$9!#e(B  
|["abc"5, “d”, “e”, “f”].pack('m’)  
| #=\> “YWJj\nYWJj\nYWJj\nYWJj\nYWJj\n”  
|["abc"5, “d”, “e”, “f”, “g”, “h”].pack('m’)  
| #=\> “YWJjYWJj\nYWJjYWJj\nYWJj\n”  
|  
|[“a”].pack("P_”) #=\> “\220\a9\001”  
|[“a”, “b”].pack(“P\*”) #=\> ArgumentError: too short buffer for P(1 for 2)  
|  
|e$B$3$Ne(B3e$B$D$N%U%)!\<%^%C%H$G$O%”%9%?%j%9%/$OC1$KL5;k$9$k$N$,NI$$$N$G$O$J$$$+e(B  
|e$B$H;W$$$^$7$F!"E:IU$N$h$&$J=$@5$r=q$$$F$\_$^$7$?!#$$$+$,$G$7$g$&e(B?

e$B$$$$$s$8$c$J$$$G$7$g$&$+!#%3%\_%C%H$7$F$/$@$5$$!#e(B
