Unicode字符串到wchar_t数组

时间:2017-04-21 18:21:40

标签: c++ arduino

我正在尝试将Arduino上的Unicode字符串转换为UTF-16,以希腊语发送短信(使用Sim800上的USC2模式)。

它要求您以UTF16格式提供消息。 例如,您需要将“Καλημέρα”(好奇的早安)转换为“039a03b103bb03b703bc03ad03c103b1”(\ u039a \ u03b1 \ u03bb \ u03b7 \ u03bc \ u03ad \ u03c1 \ u03b1)

到目前为止,我所做的是能够使用以下方法将硬编码的wchar_t数组转换为正确的格式:

String stringtoHex() {
  const wchar_t arr[] = L"Καλημέρα";
  int len =  sizeof(arr)/sizeof(wchar_t);
  String hexString = "";

  for(int idx = 0; idx <len-1; idx ++ ){
    int c_val = arr[idx];
    char tempstring[4];
    sprintf( tempstring, "%04X", c_val );
    hexString += tempstring;
  }

  Serial.print(hexString);
  return hexString;
}

现在这种方法很完美,但我需要能够在函数中实际使用String参数并使用它。 这是我的问题:

我找不到如何将unicode String转换为Arduino中的wchar_t数组。 任何人都知道这将如何运作?

所以基本上我需要让函数accept作为Unicode String的参数,然后将其转换为UTF16的字符串并返回它。

String stringtoHex(String message) {
    String hexString = "";
    ......
    //parse message and convert it to UTF16
    ......
    return hexString;
}

0 个答案:

没有答案
相关问题