Converting a 15-character all-numeric string from ASCII to 2-3 unsigned longs

Well example code:

void print1(char s[]){
  byte l,i;
  unsigned long l1,l2,l3,place;
  i=0;
  l=0;
  while (s[l] != 0){ l++; }
  place=1;
  l1 = 0;
  //unsigned long t =0;
  Serial.println();
  Serial.print("s: ");
  Serial.println(s);
  for (i=0;(i<5 && i<l); i++){
    l1 += (s[(l-1)-i] - 48)* place;
    place *= 10;
  }
  place=1;
  l2 = 0;
  for (i=5;(i<10 && i<l); i++){
    l2 += (s[(l-1)-i] - 48)* place;
    place *= 10;
  }
  place=1;
  l3 = 0;
  for (i=10;(i<15 && i<l); i++){
    l3 += (s[(l-1)-i] - 48)* place;
    place *= 10;
  }
  Serial.print(F("l1: ") );
  Serial.println( l1 );
  Serial.print(F("l2: ") );
  Serial.println( l2 );
  Serial.print(F("l3: ") );
  Serial.println( l3 );
}
void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }
  Serial.println();
  Serial.println(F("Serial connected") );

  print1("564732");
  print1("1234");
  print1("63453294031");

}

void loop() {
  // put your main code here, to run repeatedly:

}

And /dev/ttyUSB0


Serial connected

s: 564732
l1: 64732
l2: 5
l3: 0

s: 1234
l1: 1234
l2: 0
l3: 0

s: 63453294031
l1: 94031
l2: 34532
l3: 6

1 Like