# How to change ASCI to Hex

**URL:** <https://www.ruby-forum.com/t/how-to-change-asci-to-hex/147929>\
**Category:** Ruby\
**Created:** [September 7, 2008, 6:25am UTC](https://www.ruby-forum.com/t/how-to-change-asci-to-hex/147929 "2008-09-07T06:25:30Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![slaughter](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/b782af/32.png) [@slaughter](https://www.ruby-forum.com/u/slaughter)\
**Post date:** [September 7, 2008, 6:25am UTC](https://www.ruby-forum.com/t/how-to-change-asci-to-hex/147929/1 "2008-09-07T06:25:30Z")

</div>

hi everyone:  
I want to change ASCI to Hex,which i receive in the UDPSocket,but it  
just report error

1. my code is:  
server = UDPSocket.open  
server.bind(‘192.168.203.108’, $port)  
s= server.recvfrom(164)  
s=s[0]  
s=Integer(s)  
p s

2. the error report:  
in `Integer’: string contains null byte (ArgumentError)

---

<div class="post-metadata">

**Author:** ![slaughter](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/b782af/32.png) [@slaughter](https://www.ruby-forum.com/u/slaughter)\
**Post date:** [September 7, 2008, 6:48am UTC](https://www.ruby-forum.com/t/how-to-change-asci-to-hex/147929/2 "2008-09-07T06:48:56Z")

</div>

Zqd Z. wrote:

> hi everyone:  
> I want to change ASCI to Hex,which i receive in the UDPSocket,but it  
> just report error
> 
> 1. my code is:  
> server = UDPSocket.open  
> server.bind(‘192.168.203.108’, $port)  
> s= server.recvfrom(164)

I think this is what you’re asking for:

```
  s.unpack("C")[0]
```

---

<div class="post-metadata">

**Author:** ![slaughter](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/b782af/32.png) [@slaughter](https://www.ruby-forum.com/u/slaughter)\
**Post date:** [September 7, 2008, 7:11am UTC](https://www.ruby-forum.com/t/how-to-change-asci-to-hex/147929/3 "2008-09-07T07:11:45Z")

</div>

--------------------------------- Joel VanderWerf  
removed\_email\_address@domain.invalid  
removed\_email\_address@domain.invalid, removed\_email\_address@domain.invalid (ruby-talk ML)  
how to change ASCI to Hex

> I think this is what you’re asking for:
> 
> ```
> s.unpack("C")[0]
> 
> ```
> 
> –  
> vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407

Joel, In Ruby 1.9 you’re right, but with Ruby 1.8 no need to unpack,  
because str[n] returns just one character at the index points

Then,  
server = UDPSocket.open  
server.bind(‘192.168.203.108’, $port)  
s= server.recvfrom(164)  
s=s[0]  
p s

---

<div class="post-metadata">

**Author:** ![slaughter](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/b782af/32.png) [@slaughter](https://www.ruby-forum.com/u/slaughter)\
**Post date:** [September 7, 2008, 7:55am UTC](https://www.ruby-forum.com/t/how-to-change-asci-to-hex/147929/4 "2008-09-07T07:55:34Z")

</div>

--------------------------------- Joel VanderWerf  
removed\_email\_address@domain.invalid  
removed\_email\_address@domain.invalid, removed\_email\_address@domain.invalid (ruby-talk ML)  
how to change ASCI to Hex

> > > > server = UDPSocket.open  
> > > > because str[n] returns just one character at the index points
> 
> Anyway, I’m guessing the next question will be “how do I get a long from  
> positions 3…7?”, and so might as well get started using unpack…

you may see the version invoking ruby with -v option  
ie)  
c:\>ruby -v  
ruby 1.9.0 (2008-08-26 revision 18849) [i386-mswin32]

> I’m guessing the next question will be “how do I get a long from  
> positions 3…7?”, and so might as well get started using unpack…  
> Um, you are correct. I respect you.

---

<div class="post-metadata">

**Author:** ![slaughter](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/b782af/32.png) [@slaughter](https://www.ruby-forum.com/u/slaughter)\
**Post date:** [September 7, 2008, 7:30am UTC](https://www.ruby-forum.com/t/how-to-change-asci-to-hex/147929/5 "2008-09-07T07:30:27Z")

</div>

arton wrote:

> > > server.bind(‘192.168.203.108’, $port)
> 
> Then,  
> server = UDPSocket.open  
> server.bind(‘192.168.203.108’, $port)  
> s= server.recvfrom(164)  
> s=s[0]  
> p s

True, but that’s what the OP tried and got an error. Perhaps OP’s ruby  
is 1.9?

Anyway, I’m guessing the next question will be “how do I get a long from  
positions 3…7?”, and so might as well get started using unpack…

---

<div class="post-metadata">

**Author:** ![slaughter](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/b782af/32.png) [@slaughter](https://www.ruby-forum.com/u/slaughter)\
**Post date:** [September 7, 2008, 9:43am UTC](https://www.ruby-forum.com/t/how-to-change-asci-to-hex/147929/6 "2008-09-07T09:43:09Z")

</div>

thanks for answering

my ruby version is 1.8.6

well,when i receive and print,it it  
““0@\002\001\000\004\006public\2443\006\006+\006\001\004\001\t@\004\300\250\313\031\002\001\006\002\001\*C\002090\0310\027\006\b+\006\001\002\001\001\005\000\004\vSystem  
Name\n””

how can i print it in Hex?

arton wrote:

> --------------------------------- Joel VanderWerf  
> removed\_email\_address@domain.invalid  
> removed\_email\_address@domain.invalid, removed\_email\_address@domain.invalid (ruby-talk ML)  
> how to change ASCI to Hex
> 
> > > > > server = UDPSocket.open  
> > > > > because str[n] returns just one character at the index points
> > 
> > Anyway, I’m guessing the next question will be “how do I get a long from  
> > positions 3…7?”, and so might as well get started using unpack…
> 
> you may see the version invoking ruby with -v option  
> ie)  
> c:\>ruby -v  
> ruby 1.9.0 (2008-08-26 revision 18849) [i386-mswin32]
> 
> > I’m guessing the next question will be “how do I get a long from  
> > positions 3…7?”, and so might as well get started using unpack…  
> > Um, you are correct. I respect you.

---

<div class="post-metadata">

**Author:** ![slaughter](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/b782af/32.png) [@slaughter](https://www.ruby-forum.com/u/slaughter)\
**Post date:** [September 7, 2008, 10:24am UTC](https://www.ruby-forum.com/t/how-to-change-asci-to-hex/147929/7 "2008-09-07T10:24:08Z")

</div>

2008/9/7 Zqd Z. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> thanks for answering
> 
> my ruby version is 1.8.6
> 
> well,when i receive and print,it it  
> ““0@\002\001\000\004\006public\2443\006\006+\006\001\004\001\t@\004\300\250\313\031\002\001\006\002\001\*C\002090\0310\027\006\b+\006\001\002\001\001\005\000\004\vSystem  
> Name\n””
> 
> how can i print it in Hex?

s.unpack(‘H\*’)  
Or  
s.unpack(‘C\*’).map{|x| ’ %02x’ % x}.join

Regards,

Park H.

---

<div class="post-metadata">

**Author:** ![slaughter](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/b782af/32.png) [@slaughter](https://www.ruby-forum.com/u/slaughter)\
**Post date:** [September 7, 2008, 12:23pm UTC](https://www.ruby-forum.com/t/how-to-change-asci-to-hex/147929/8 "2008-09-07T12:23:13Z")

</div>

thanks for all ~~~~~~~

i have resolve with your help:

line=line.unpack(“H\*”)

it work,3ks!

---

<div class="post-metadata">

**Author:** ![slaughter](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/b782af/32.png) [@slaughter](https://www.ruby-forum.com/u/slaughter)\
**Post date:** [September 7, 2008, 10:23am UTC](https://www.ruby-forum.com/t/how-to-change-asci-to-hex/147929/9 "2008-09-07T10:23:33Z")

</div>

--------------------------------- Zqd Z. removed\_email\_address@domain.invalid  
removed\_email\_address@domain.invalid, removed\_email\_address@domain.invalid (ruby-talk ML)  
how to change ASCI to Hex

> thanks for answering
> 
> my ruby version is 1.8.6
> 
> well,when i receive and print,it it  
> ““0@\002\001\000\004\006public\2443\006\006+\006\001\004\001\t@\004\300\250\313\031\002\001\006\002\001\*C\002090\0310\027\006\b+\006\001\002\001\001\005\000\004\vSystem  
> Name\n””
> 
> how can i print it in Hex?

p data.unpack(‘H\*’)[0]

unpack specifier H measn per 4 bit decode (into 0-F)  
\* means whole size
