文字列をバイト配列に変換する方法

私はコードを持っています、目的は以下のようにコンボルトから文字列を受け取ることです: @ 1234567890123456 @ 1234567890123456 @ 1234567890123456 @ 1234567890123456に設定する byte user1 [16]、user2 [16]、pass1 [16]、pass2 [16] の4つのバイト配列に変換します。コードは次のとおりです:

String inString = "";//COM port incoming data buffer

void setup() {
 //put your setup code here, to run once:
  Serial.begin(9600);
  Serial.println("Start");
}

void loop() {
 //put your main code here, to run repeatedly:
 //Receive data from com port
  while (Serial.available() > 0) {
    int inChar = Serial.read();


    if (inChar != '\n') {
      inString += (char)inChar;
    } else {
     //New line
      String Action = inString.substring(0, 3);
      if (Action == "Set") {
        SetCard(inString);
      } else if (Action == "Get") {
        Serial.println("1");
      } else {
        Serial.println(Action);
      }
      inString = "";
    }
  }
}

void SetCard(String Data) {
  Serial.println(Data);
 //Data [email protected]@[email protected]@pass2
 //[email protected]@[email protected]@1234567890123456
  byte user1[16], user2[16], pass1[16], pass2[16];

  String user1str = inString.substring(4, 20);
  String user2str = inString.substring(21, 37);
  String pass1str = inString.substring(38, 54);
  String pass2str = inString.substring(55, 71);

  Serial.println("Strings");
  Serial.println(user1str);
  Serial.println(user2str);
  Serial.println(pass1str);
  Serial.println(pass2str);

  Serial.println("Arrays");
  user1str.getBytes(user1, 16);
  user2str.getBytes(user2, 16);
  pass1str.getBytes(pass1, 16);
  pass2str.getBytes(pass2, 16);


  writeByteArray(user1, 16);
  writeByteArray(user2, 16);
  writeByteArray(pass1, 16);
  writeByteArray(pass2, 16);
}

void writeByteArray(byte array[], int arrlength)
{
  for (int j = 0 ; j < arrlength ; j++) //print the block contents
  {
    Serial.write (array[j]);//Serial.write() transmits the ASCII numbers as human readable characters to serial monitor
  }
  Serial.println("");
}

私はこのコードを実行し、COMポートを介して私の出力を期待する私の文字列を送信する:

Start
[email protected]@[email protected]@1234567890123456
Strings
1234567890123456
1234567890123456
1234567890123456
1234567890123456
Arrays
1234567890123456
1234567890123456
1234567890123456
1234567890123456

それでも、私は

Start
[email protected]@[email protected]@1234567890123456
Strings
1234567890123456
1234567890123456
1234567890123456
1234567890123456
Arrays
123456789012345
123456789012345
123456789012345
123456789012345

Why? And how do I receive desired output? getBytes docs

0
追加された
ビュー: 2

1 答え

1
追加された
ありがとうございました。出来た。だから、getBytesで値を設定した後、 user1 [17] 配列を user1 [16] に切り詰めるにはどうすればよいですか?
追加された 著者 Richard Rast,
または、バッファ配列[17]を作成し、そこから最初の16個の要素を配列[16]に書き出す必要がありますか?
追加された 著者 Richard Rast,
それを考えてみると、(int j = 0; j で、16個の要素で動作します
追加された 著者 Richard Rast,