我正在尝试将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;
}