convert DEC Value to a HEX value then takeaway -30 ????

Having some problem trying to convert DEC Value to a HEX value then takeaway -30 to give me the Correct Value.. Then ADD the 4 Data values together to Give ME the complete Value

/////////////////////////////////////////////////////////////////////////////////////////
int data1 = 170, data2 = 01, data3 = 68, data4 = 48, data5 = 48, data6 = 54;
int data7 = 56, data8 = 57, data9 = 55, data10 = 03, data11 = 168;
/////////////////////////////////////////////////////////////////////////////////////////    
unsigned int V1 = 0, V2 = 0, V3 = 0, V4 = 0;
char sensorValue[40]; 
int outputValue = 0;
/////////////////////////////////////////////////////////////////////////////////////////
int PWM1 = 3;
/////////////////////////////////////////////////////////////////////////////////////////
void setup()
{
 Serial.begin(9600);
 pinMode(PWM1, OUTPUT); 
}
/////////////////////////////////////////////////////////////////////////////////////////
void loop()
{
      delay(1000);
      Serial.println("  ");
      Serial.println("IN,AD,CD,D1,D2,D3,D4,D5,D6,CS,ED,");
      Serial.print(data1,HEX), Serial.print(","), Serial.print("0");
      Serial.print(data2,HEX), Serial.print(",");
      Serial.print(data3,HEX), Serial.print(",");
      Serial.print(data4,HEX), Serial.print(",");
      Serial.print(data5,HEX), Serial.print(",");
      Serial.print(data6,HEX), Serial.print(",");
      Serial.print(data7,HEX), Serial.print(",");
      Serial.print(data8,HEX), Serial.print(",");
      Serial.print(data9,HEX), Serial.print(",");
      Serial.print(data10,HEX), Serial.print(",");
      Serial.print(data11,HEX), Serial.print(",");
      Serial.println("  ");
      
      V1 = (data6), V2 = (data7), V3 = (data8), V4 = (data9);
      Serial.println("  ");
      Serial.print("Data 3 : "), Serial.println(V1,HEX);
      Serial.print("Data 4 : "), Serial.println(V2,HEX);
      Serial.print("Data 5 : "), Serial.println(V3,HEX);
      Serial.print("Data 6 : "), Serial.println(V4,HEX);

      ////////////////////////////////////////////////////////////////////////

      Need something Here that I can use the int value and change it into a Hex value 
      Then Takeaway - 30 and save that value for each of V1 , V2, V3, V4
      So when I join them together it will give me one number  eg> 6897
      then the Measurement will show> Measurement : 6897 mm

      ////////////////////////////////////////////////////////////////////////

      sprintf(&sensorValue[0], "%01d%01d%01d%01d", data6, data7, data8, data9);
      Serial.print("Measurement : "), Serial.print(sensorValue), Serial.println(" mm");
      outputValue = atol(sensorValue);
      int tt = strtol(sensorValue, NULL, 16);
      outputValue = map(tt, 0, 8000, 0, 255);  
      analogWrite(PWM1, outputValue); 
      Serial.print("PWM : "), Serial.println(outputValue);

}

//////////////////////////////////////////////////// Coms Data
IN,AD,CD,D1,D2,D3,D4,D5,D6,CS,ED,
AA,01,44,30,30,36,38,39,37,3,A8,

Data 3 : 36
Data 4 : 38
Data 5 : 39
Data 6 : 37
Measurement : 54565755 mm
PWM : 712
////////////////////////////////////////////////////

Thanks Delta_G that works but I'm having problems changing the int value to a HEX

What I have are these values stored
data6 = 54
data7 = 56
data8 = 57
data9 = 55

so how can I convert them to HEX and Store that

36,38,39,37

V1 = (data6), V2 = (data7), V3 = (data8), V4 = (data9);
Serial.print("Data 3 : "), Serial.println(V1,HEX); This only prints in HEX

Data 3 : 36
Data 4 : 38
Data 5 : 39
Data 6 : 37

Then Takeaway -30

Then Join them Together

Measurement : 6897 mm

int data6 = 54;
int data7 = 56;
int data8 = 57;
int data9 = 55;

int result = ((data6 - 48) * 1000) + ((data7 - 48) * 100) + ((data8 - 48) * 10) + (data9 - 48);

Serial.print(result);

You beat me guix. :smiley:
(And your answer was better.)
But since I'd already typed it:-

@vmansmx5, I think that you asked the wrong question. If I understand you correctly, you want to convert ASCII digits to decimal. ie 0x30 = 0, 0x31 = 1, 0x32=2 etc

You can do that in decimal. Just subtract decimal 48, which is the same as 0x30.
For instance, if you have ASCII char cVal=0x39, and you want to convert it to a byte containing the number represented by cVal, try this in setup():-

void setup()
{
    Serial.begin(115200);
    char cVal=0x39;
    byte bVal=cVal-48;
    Serial.println(bVal);        // Prints "9"
}

Thanks guix this is perfect :slight_smile: :slight_smile: :slight_smile: :slight_smile: :slight_smile: :slight_smile:

//////////////////////////////////////////////////// Coms
IN,AD,CD,D1,D2,D3,D4,D5,D6,CS,ED,
AA,01,44,30,30,36,38,39,37,3,A8,

Data 3 : 36
Data 4 : 38
Data 5 : 39
Data 6 : 37
Measurement : 6897 mm
PWM : 219
////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////////////////////
int data1 = 170, data2 = 01, data3 = 68, data4 = 48, data5 = 48, data6 = 54;
int data7 = 56, data8 = 57, data9 = 55, data10 = 03, data11 = 168;
/////////////////////////////////////////////////////////////////////////////////////////    
int outputValue = 0;
/////////////////////////////////////////////////////////////////////////////////////////
int PWM1 = 3;
/////////////////////////////////////////////////////////////////////////////////////////
void setup()
{
 Serial.begin(9600);
 pinMode(PWM1, OUTPUT); 
}
/////////////////////////////////////////////////////////////////////////////////////////
void loop()
{
      delay(1000);
      Serial.println("  ");
      Serial.println("IN,AD,CD,D1,D2,D3,D4,D5,D6,CS,ED,");
      Serial.print(data1,HEX), Serial.print(","), Serial.print("0");
      Serial.print(data2,HEX), Serial.print(",");
      Serial.print(data3,HEX), Serial.print(",");
      Serial.print(data4,HEX), Serial.print(",");
      Serial.print(data5,HEX), Serial.print(",");
      Serial.print(data6,HEX), Serial.print(",");
      Serial.print(data7,HEX), Serial.print(",");
      Serial.print(data8,HEX), Serial.print(",");
      Serial.print(data9,HEX), Serial.print(",");
      Serial.print(data10,HEX), Serial.print(",");
      Serial.print(data11,HEX), Serial.print(",");
      Serial.println("  ");
      
      Serial.println("  ");
      Serial.print("Data 3 : "), Serial.println(data6,HEX);
      Serial.print("Data 4 : "), Serial.println(data7,HEX);
      Serial.print("Data 5 : "), Serial.println(data8,HEX);
      Serial.print("Data 6 : "), Serial.println(data9,HEX);
      
      int result = ((data6 - 48) * 1000) + ((data7 - 48) * 100) + ((data8 - 48) * 10) + (data9 - 48);
      Serial.print("Measurement : "), Serial.print(result), Serial.println(" mm");
      outputValue = map(result, 0, 8000, 0, 255);  
      analogWrite(PWM1, outputValue); 
      Serial.print("PWM : "), Serial.println(outputValue);

}
/////////////////////////////////////////////////////////////////////////////////////////