Don't reduce them to "decimal", convert them to numbers (hex), multiply them and convert back to hexadecimal representation (sprintf):
perl -wle "print sprintf '%08x', hex(shift)*hex(shift)" 12340f 33
| [reply] [Watch: Dir/Any] [d/l] |
| [reply] [Watch: Dir/Any] |
| [reply] [Watch: Dir/Any] |
The OP wants to "convert to decimal" representation, which is the wrong terminology IMO.
Thinking about numbers in terms of their representational basis is wrong - just because print converts numbers to their representation in decimal, that doesn't mean they are still numbers ;)
| [reply] [Watch: Dir/Any] [d/l] |
There is a wrong understanding in your post.
Numbers exist independently of their (hexadecimal, decimal or other) representations.
From Perldoc: hex interprets EXPR as a hex string and returns the corresponding value.
The hex function converts a string into a number, it does not convert an hex number into a decimal number (even though if you print the output of hex, it will be printed as a decimal number, this does not imply that they're stored as decimal numbers, as this is irrelevant, they are stored as numbers).
Now, if you want to multiply numbers, they have some how to be numbers. So you need to convert your strings into numbers (not decimal or hexadecimal numbers), or at least something that Perl understands as numbers. So converting your hexadecimal strings to numbers is the right way to do it. And, once you've done that, you can multiply your numbers, and then print out the resulting number value in any representation you wish, including hexadecimal representation or any other one.
| [reply] [Watch: Dir/Any] [d/l] |
First, that's exactly the right answer.
To quibble a little bit, computers don't manipulate numbers in the abstract, they store them in binary. (You can just say "internal representation" if you want to pretend that anyone is using a non-binary computer.)
Now I'm just getting silly. You could, technically, write code to multiply numbers by directly working on their (decimal or hex) string representations, using the grade school long-form method. It would be a million times slower, because you're emulating something the computer can do in one instruction, but you could do it.
So, once again, listen to Laurent. Put the numbers in a form the computer can work with easily, let it do its magic, then convert them back to the form you want to look at.
| [reply] [Watch: Dir/Any] |
This is a very common misunderstanding. Common English usage does not distinguish between 'number' (the abstract concept) and 'numeral' (a representation of a number). In the rare cases where it makes a difference, we often get confused. Your use of 'value' solves the problem nicely.
| [reply] [Watch: Dir/Any] |