Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
?
Solved

HEX number conversion?

Posted on 1998-05-20
8
Medium Priority
?
652 Views
Last Modified: 2011-10-03
I am trying to convert a scalar variable into a HEX number without success. For example:
$num = 254.6; #Some number
$num = sprintf("%.0f",$num); #Round off the number
... # Now how do I get $num == "FF" ?

Thanks in advance - Eric
0
Comment
Question by:Erick37
  • 5
  • 3
8 Comments
 
LVL 85

Expert Comment

by:ozo
ID: 1206277
$num=sprintf'%X',$num;
0
 
LVL 32

Author Comment

by:Erick37
ID: 1206278
Ok, well now I feel dumb... If you want the points, ozo, post it as a proposed answer.
0
 
LVL 32

Author Comment

by:Erick37
ID: 1206279
Another HEX question:
How do you test raw binary data read from a file without resorting to crytic characters as in the example below?  I would like my code more readable and not have to look up the character codes for the HEX numbers.

#Look for Graphic Control Extension 0x21
if ($temp =~ /^!/) {
    ...
    read(FILE, $temp, 1);  #See what kind of extension it is.
    if ($temp =~ /^ù/) {  #Graphic Control label 0xFE
        ...
    }
    ...
}
0
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

 
LVL 85

Expert Comment

by:ozo
ID: 1206280
if( $temp =~ /^\x21/ ){
  ...
  if( substr($temp,0,1) eq "\xFE"  ){ #but isn't 'ù' eq "\xF9"  and 'þ' eq "\fe" ?
0
 
LVL 32

Author Comment

by:Erick37
ID: 1206281
Thanks again ozo... geez my books are bad!
And you are right 0xFE is 'þ', the error was in my comment, I was testing for 0xF9 (now you can see why I need to use the hex value directly!)

Cheers.
0
 
LVL 32

Author Comment

by:Erick37
ID: 1206282
OK - here's another one: (I'm tryin' hard to give away these points)
I plugged in the code you suggested:
$num=sprintf'%X',$num; #convert a number to hex
and it works fine except I need a byte returned, when $num is less than 16.5 I get "F" when I want "0F"

Other than testing for this condition in an 'if' block, can sprintf return formatted hex numbers of a specific length?
Suppose I want "000F" for example.
0
 
LVL 85

Accepted Solution

by:
ozo earned 400 total points
ID: 1206283
Even if your books are bad you should have
perldoc perlfunc
and
perldoc perlre
etc. installed with your perl

$num=sprintf'%04X',$num;
#another method:
$num = uc unpack'H2',pack'C',sprintf"%.f",$num;
$num = uc unpack'H4',pack'n',sprintf"%.f",$num;


0
 
LVL 32

Author Comment

by:Erick37
ID: 1206284
Thanks ozo:
Both methods you provided work perfectly.

Now it's time to browse the perldocs I guess.
0

Featured Post

Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Email validation in proper way is  very important validation required in any web pages. This code is self explainable except that Regular Expression which I used for pattern matching. I originally published as a thread on my website : http://www…
A year or so back I was asked to have a play with MongoDB; within half an hour I had downloaded (http://www.mongodb.org/downloads),  installed and started the daemon, and had a console window open. After an hour or two of playing at the command …
Explain concepts important to validation of email addresses with regular expressions. Applies to most languages/tools that uses regular expressions. Consider email address RFCs: Look at HTML5 form input element (with type=email) regex pattern: T…
Six Sigma Control Plans
Suggested Courses

571 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question