How to change ASCI to Hex

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)

···

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

Zqd Zqd 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]

···

--
       vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407

--------------------------------- Joel VanderWerf vjoel@path.berkeley.edu
vjoel@path.berkeley.edu, ruby-talk@ruby-lang.org (ruby-talk ML)
how to change ASCI to Hex

Zqd Zqd 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]

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

···

--------------------------------------
Enjoy MLB with MAJOR.JP! Ichiro, Matsuzaka, Matsui, and more!
http://pr.mail.yahoo.co.jp/mlb/

arton wrote:

--------------------------------- Joel VanderWerf vjoel@path.berkeley.edu
vjoel@path.berkeley.edu, ruby-talk@ruby-lang.org (ruby-talk ML)
how to change ASCI to Hex

Zqd Zqd 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]

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

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....

···

--
       vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407

--------------------------------- Joel VanderWerf vjoel@path.berkeley.edu
vjoel@path.berkeley.edu, ruby-talk@ruby-lang.org (ruby-talk ML)
how to change ASCI to Hex

arton wrote:
> --------------------------------- Joel VanderWerf vjoel@path.berkeley.edu
> vjoel@path.berkeley.edu, ruby-talk@ruby-lang.org (ruby-talk ML)
> how to change ASCI to Hex
>> Zqd Zqd 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]
>>
>> --
>> 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

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....

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.

···

--------------------------------------
Enjoy MLB with MAJOR.JP! Ichiro, Matsuzaka, Matsui, and more!
http://pr.mail.yahoo.co.jp/mlb/

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
vjoel@path.berkeley.edu
vjoel@path.berkeley.edu, ruby-talk@ruby-lang.org (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.

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

--------------------------------- Zqd Zqd fzzqd@hotmail.com
fzzqd@hotmail.com, ruby-talk@ruby-lang.org (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

···

--------------------------------------
Enjoy MLB with MAJOR.JP! Ichiro, Matsuzaka, Matsui, and more!
http://pr.mail.yahoo.co.jp/mlb/

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

Regards,

Park Heesob

···

2008/9/7 Zqd Zqd <fzzqd@hotmail.com>:

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?

thanks for all~~~~~~~

i have resolve with your help:

line=line.unpack("H*")

it work,3ks!

···

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