hi,
How do I construct a string out of hex values?
In other words I want to give exact hex value for each byte in the
string. So I would have soemthing like
0x2a, 0x7e, 0x0a, 0x7e
If I go through Fixnum I get my string to contain numbers 48, 115, 10,
115 but I do not want that but rather a string of ASCII(48),
ACII(115),…
Thanks
srdjan
Srdjan M. wrote:
hi,
How do I construct a string out of hex values?
In other words I want to give exact hex value for each byte in the
string. So I would have soemthing like
0x2a, 0x7e, 0x0a, 0x7e
If I go through Fixnum I get my string to contain numbers 48, 115, 10,
115 but I do not want that but rather a string of ASCII(48),
ACII(115),…
Thanks
srdjan
irb(main):001:0> p = “\x2a\x7e\x0a\x7e”
=> “*~\n~”
irb(main):002:0>
Srdjan M. wrote:
0x2a, 0x7e, 0x0a, 0x7e
[ 0x2a, 0x7e, 0x0a, 0x7e ].pack ‘C*’
“Srdjan M.” [email protected] writes:
How do I construct a string out of hex values?
In other words I want to give exact hex value for each byte in the
string. So I would have soemthing like
0x2a, 0x7e, 0x0a, 0x7e
If I go through Fixnum I get my string to contain numbers 48, 115, 10,
115 but I do not want that but rather a string of ASCII(48),
ACII(115),…
irb(main):001:0> a = [ 0x2a, 0x7e, 0x0a, 0x7e ]
=> [42, 126, 10, 126]
irb(main):002:0> a.map{|x|x.chr}.join
=> “*~\n~”
If all you have is the string representation of the hex values (say,
if you’re reading hex values from a file), you have to do just a tiny
bit more to first convert the hex values into integers:
irb(main):001:0> a = %w[ 2a 7e 0a 7e ]
=> [“2a”, “7e”, “0a”, “7e”]
irb(main):002:0> a.map{|x|x.hex.chr}.join
=> “*~\n~”
But only just barely more.
thanks a lot for you help
On Wed, 6 Sep 2006, Srdjan M. wrote:
ACII(115),…
Thanks
srdjan
the append operator of String does what you want with Fixnums. as
others have
pointed out you can use pack to initially contruct it. but you can also
continue to build it up with a simple ‘<<’
harp:~ > cat a.rb
s = [ 0x2a, 0x7e, 0x0a, 0x7e ].inject(’’){|s,c| s << c}
p s[0]
p 0x2a
harp:~ > ruby a.rb
42
42
regards.
-a