Click here to Skip to main content
14,669,017 members
Rate this:
Please Sign up or sign in to vote.
See more:
Hello All,

Thanks in advance.

I have one method setpower which is used to set hardware power.
SetHardwarePower(new byte[]{0x0a,0x14,0x14,0x14});

In above method you 0x0a means in 10 , 0x14 means 20.

For API design I wrote one method For e.g. SetRfPower(10,20,20,20)

public boolean SetPower(int Power1,int Power2,int Power3,int Power4)
{
    //here I have to convert int to hex
    String power1inhex = "0x";
    power1inhex += Integer.toHexString(Power1); // power1inhex = 0x0a
    
    // Please help me to write code here. How should I use power1inhex string as byte to pass in method SetHardwarePower.
    
    SetHardwarePower(new byte[]{0x0a,0x14,0x14,0x14});
}

I tried a lot. please let us know any separate approach.
Posted
Updated 5-Nov-15 23:16pm
v2
Comments
Richard MacCutchan 6-Nov-15 6:03am
   
There is nothing to convert: Hex 0x14 is exactly the same value as decimal 20.
Tejas Sawant 13 6-Nov-15 7:41am
   
but the value is in string format. Method needs it in byte format. If I write like

SetHardwarePower(new byte[]{power1inhex ,0x14,0x14,0x14});

it doesn't work.
Richard MacCutchan 6-Nov-15 10:06am
   
I suggest you buy a book on basic computer theory. You seem to have a total misunderstanding between the way data is stored, and how it is displayed.

Whether you write
SetHardwarePower(new byte[]{power1inhex ,0x14,0x14,0x14});
or
SetHardwarePower(new byte[]{power1inhex ,20,20,20});

the result is exactly the same.
Tejas Sawant 13 7-Nov-15 0:37am
   
Thanks for suggestion.
If it could be that much simple why should I asked here.

I tried that. But it doesn't work dear.
Tejas Sawant 13 7-Nov-15 0:38am
   
power1inhex is string it doesnt treat as byte
Richard MacCutchan 7-Nov-15 5:06am
   
Then you should have explained that in your question. And what exactly is contained in that string?
Richard MacCutchan 7-Nov-15 5:06am
   
That is why I suggest reading a book on the basics. Without a good understanding of the fundamentals you are always going to struggle.
Tejas Sawant 13 1-Jun-16 6:27am
   
well said

Rate this:
Please Sign up or sign in to vote.

Solution 1

First of all, if you use int as your argument type you might run into an overflow situation. Better to use byte and do a type cast when you call the method (if necessary)
public boolean SetPower(byte Power1, byte Power2, byte Power3, byte Power4)
{
    //here I have to convert int to hex
    String power1inhex = "0x";
    power1inhex += Integer.toHexString(Power1); // power1inhex = 0x0a

    // Please help me to write code here. How should I use power1inhex string as byte to pass in method SetHardwarePower.

    // No conversion needed. The computer will interpret your the input values as
    // hexadecimal numbers automatically. (Not the best explanation, I know) 
    SetHardwarePower(new byte[]{Power1, Power2, Power3, Power4});
}


If the user is entering decimal values as a string, you only need to convert from string to byte.
string aString = "10";
byte aByte = (byte)Integer.parseInt(aString);
        dec   hex     binary
aByte = 10 or 0x0A or 0000 1010 (it all depends on how you choose to show the value)
   
v3
Comments
Tejas Sawant 13 6-Nov-15 7:39am
   
Thanks.
I am taking input from user. If user will give value as integer like 10,20,30.. He wont understand byte or hex.

So consider I have value 10,20,20,20...

How should I convert it into 0x0a,0x14,0x14,0x14 as byte not a string ... i.e. what actually I am looking for.
George Jonsson 6-Nov-15 8:51am
   
I told you in the solution that you don't need any conversion.
10 as decimal is equal to 0x0A in hexadecimal or '0000 1010' in binary representation.
It is just a matter of how you present it on a printout. Internally the computer uses binary code.
So test the code and use the debugger and you will see that it works.
George Jonsson 6-Nov-15 8:56am
   
How do you read the user input? As a string?
Tejas Sawant 13 7-Nov-15 0:41am
   
yes
George Jonsson 7-Nov-15 2:26am
   
Then see my updated solution.
Rate this:
Please Sign up or sign in to vote.

Solution 2

The solution is to read Java documentation.

In Java documentation, you will learn that there is more than one way to write an integer in source code and the same apply to user integer input.

Any integer can be typed in Hexadecimal, Decimal, Octal and Binary. Your µ-proc only handle Binary, so the compiler and the integer input command silently convert any integer to its Binary representation, no matter what.
if the user input is 100 or 0144 or 0x64 or 0b1100100, you will only ever know the decimal value 100 stop
You don't have to care about theses details.
http://rodrigosasaki.com/2013/06/10/number-literals-in-java/[^]
   
Comments
Tejas Sawant 13 7-Nov-15 0:40am
   
ok

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)




CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100