# Constructing a string from hex value

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 Marinovic wrote:

0x2a, 0x7e, 0x0a, 0x7e

[ 0x2a, 0x7e, 0x0a, 0x7e ].pack 'C*'

···

--
Florian Frank

Srdjan Marinovic 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>

···

--
Posted via http://www.ruby-forum.com/.

"Srdjan Marinovic" <srdjan.marinovic@gmail.com> 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.

···

--
s=%q( Daniel Martin -- martin@snowplow.org
puts "s=%q(#{s})",s.map{|i|i}[1] )
puts "s=%q(#{s})",s.map{|i|i}[1]

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

regards.

-a

···

On Wed, 6 Sep 2006, Srdjan Marinovic 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

--
what science finds to be nonexistent, we must accept as nonexistent; but what
science merely does not find is a completely different matter... it is quite
clear that there are many, many mysterious things.
- h.h. the 14th dalai lama

thanks a lot for you help

···

On 9/6/06, Florian Frank <flori@nixe.ping.de> wrote:

Srdjan Marinovic wrote:
> 0x2a, 0x7e, 0x0a, 0x7e

[ 0x2a, 0x7e, 0x0a, 0x7e ].pack 'C*'

--
Florian Frank