Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

HEX number conversion?

Posted on 1998-05-20
8
Medium Priority
?
648 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
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
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

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

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…
There are many situations when we need to display the data in sorted order. For example: Student details by name or by rank or by total marks etc. If you are working on data driven based projects then you will use sorting techniques very frequently.…
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

963 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