53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
# File 'lib/rdoba/numeric.rb', line 53
def to_p(*opts)
v = parse_opts(opts)
value = self
minus = if value < 0
value = -value
true
end
res = ''
while value != 0
value, rem = value.divmod(256)
res += rem.chr
end
pad_char = if minus
negres += ''
over = 1
res.each_byte do |byte|
negbyte = 255 - byte + over
negres += if negbyte > 255
over = 1
0
else
over = 0
negbyte
end
end
res = negres
"\xFF"
else
"\0"
end
res += pad_char * (v[:padding].to_i - res.size) if res.size < v[:padding].to_i
plain = (v[:be] ? res.reverse(String::ByteByByte) : res).to_p
plain
end
|