Arduinoで桁数を指定して0埋めする方法

Arduino,電子工作sprintf

Arduinoで数値を桁数指定して0埋めしたいので方法を考えてみる。

自前で用意

自前で組んでみる。

// numに数値を、zeroCountに桁数を指定する。
String strPad(int num,int zeroCount){
  String str = String(num);
  String returnStr = "";
  if(zeroCount <= str.length()){
    return str;
  }
  for(int i = 0;i < zeroCount - str.length();i++){
    returnStr += '0';
  }
  return returnStr + str;
}

sprintfを使用する

こちらは標準のsprintfを使用するものです。

こっちが無難かも。

// numに数値を、zeroCountに桁数を指定する。
String strPad2(int num,int zeroCount){
  char tmp[256];
  char param[5] = {'%','0',(char)(zeroCount+48),'d','\0'};
  sprintf(tmp,param,num);
  return tmp;
}

動作確認

void setup() {
  Serial.begin(9600);
  Serial.println(strPad(0,4));
  Serial.println(strPad(10,4));
  Serial.println(strPad(100,4));
  Serial.println(strPad(1000,4));

  Serial.println(strPad2(0,4));
  Serial.println(strPad2(10,4));
  Serial.println(strPad2(100,4));
  Serial.println(strPad2(1000,4));
}
String strPad(int num,int zeroCount){
  String str = String(num);
  String returnStr = "";
  if(zeroCount <= str.length()){
    return str;
  }
  for(int i = 0;i < zeroCount - str.length();i++){
    returnStr += '0';
  }
  return returnStr + str;
}
String strPad2(int num,int zeroCount){
  char tmp[256];
  char param[5] = {'%','0',(char)(zeroCount+48),'d','\0'};
  sprintf(tmp,param,num);
  return tmp;
}
void loop() {
  
}