Tuesday, April 10, 2012

shell command to add two non integer hexadecimal value

shell command to add two non integer hexadecimal value:


ayaskant16
LQ Newbie

Registered: Apr 2008
Posts: 6

Rep: Reputation: 0
shell command to add two non integer hexadecimal value


[Log in to get rid of this advertisement]
hi,
do anyone know any command to how to add for example

0x10e0 and 0x0008 .

for adding integers i know it is "expr" but for the above kind of addition i am not able to get the command

thanks in advance
 
Old 11-18-2008, 06:32 AM  #2
JZL240I-U
Senior Member

Registered: Apr 2003
Location: Germany
Distribution: SuSE 11.4_64-KDE, 12.1_64-KDE
Posts: 3,308

Rep: Reputation: Disabled
From http://www.tldp.org/LDP/Bash-Beginne...e.html#chap_03
Chapter 3.4.6:

...
Shell variables are allowed as operands; parameter expansion is performed before the expression is evaluated. Within an expression, shell variables may also be referenced by name without using the parameter expansion syntax. The value of a variable is evaluated as an arithmetic expression when it is referenced. A shell variable need not have its integer attribute turned on to be used in an expression.

Constants with a leading 0 (zero) are interpreted as octal numbers. A leading "0x" or "0X" denotes hexadecimal. Otherwise, numbers take the form "[BASE'#']N", where "BASE" is a decimal number between 2 and 64 representing the arithmetic base, and N is a number in that base. If "BASE'#'" is omitted, then base 10 is used. The digits greater than 9 are represented by the lowercase letters, the uppercase letters, "@", and "_", in that order. If "BASE" is less than or equal to 36, lowercase and uppercase letters may be used interchangably to represent numbers between 10 and 35.

Operators are evaluated in order of precedence. Sub-expressions in parentheses are evaluated first and may override the precedence rules above.

Wherever possible, Bash users should try to use the syntax with angular brackets:

$[ EXPRESSION ]

However, this will only calculate the result of EXPRESSION, and do no tests:

franky ~> echo $[365*24]
8760


...

Last edited by JZL240I-U; 11-18-2008 at 08:32 AM.
 
Old 11-18-2008, 07:22 AM  #3
pixellany
Guru

Registered: Nov 2005
Location: Pasadena, CA
Distribution: Arch+KDE
Posts: 16,552

Rep: Reputation: 416Reputation: 416Reputation: 416Reputation: 416Reputation: 416
Quote:
Originally Posted by ayaskant16 View Post
hi,
do anyone know any command to how to add for example

0x10e0 and 0x0008 .

for adding integers i know it is "expr" but for the above kind of addition i am not able to get the command

thanks in advance
Those ARE integers!! In basic BASH, you cannot do non-integer math.

This works:
printf "%x\n" $((0x10e0+0x0008))
 
Old 11-19-2008, 03:59 AM  #4
ayaskant16
LQ Newbie

Registered: Apr 2008
Posts: 6

Original Poster
Rep: Reputation: 0
thanks a lot. i am now converting the no to decimal and then adding with the decimal value.


'via Blog this'

No comments:

Post a Comment