#define ArrLen(x) (sizeof(x)/sizeof(x[0]))
/*
struct KeyMap {
const char* t9_page[3];
char text[3][3];
};
KeyMap matrix = {
{"","",""},
{{"","",""}, {"","",""}, {"","",""}},
};
*/
void FullTest() {
const char uni[] = "\xE6";
int val = (unsigned char)uni[0];
char x = -27;
char chars[5];
memset(chars, '\0', 5);
chars[0] = -26;
chars[1] = -8;
chars[2] = -27;
chars[3] = 'A';
Serial.print("uni: "); Serial.println(*uni);
Serial.print("val: "); Serial.println(val);
Serial.print("len: "); Serial.println(strlen(uni));
Serial.print("x: "); Serial.println(x);
Serial.println((unsigned char)x);
Serial.print("chars:"); Serial.println(chars);
}
const char str[] = "\xE6\xC6";
const char str2[] = u8"æÆ";
const char str3[] = "\xE6";
int StrToHex(char str[]) {
return strtol(str, 0, 16);
}
void setup() {
Serial.begin(9600);
uint16_t valerian = (str3[0] << 8) | str3[1];
char dataString[4];
memset(dataString, 0, sizeof(dataString));
sprintf(dataString, "%03X", valerian);
dataString[2] = '\0';
Serial.print("data: "); Serial.println(dataString);
char output[7];
sprintf(output, "\\u00%s", dataString);
int x = (unsigned char)(strtol(dataString, 0, 16));
Serial.print("output: "); Serial.println(output[0]);
Serial.print("x: "); Serial.println(x);
//memset(dataString, 0, sizeof(dataString));
//char *p = &dataString;
//sprintf(dataString, "%.*X", 2, dataString);
//Serial.print("data: "); Serial.println(dataString);
//sprintf(dataString, "\\x%02X",valerian);
//Serial.print("data: "); Serial.println(dataString);
//Serial.println(valerian, HEX);
Serial.println("\n---------------------------\n");
while(1);
char text[3][4] = {
{-26, -8, -27, 'a'},
{'d','e','f',' '},
{'g','h','i',' '},
};
for (int i=0; i<ArrLen(text[0]); i++) {
int b = (unsigned char)text[0][i];
Serial.print(i); Serial.print(" ");
Serial.println(b);
}
Serial.println("\n---------------------------\n");
/*
for (int i=0; i<ArrLen(text[0]); i++) {
Serial.print(i); Serial.print(" "); Serial.print(text[0][i]);
Serial.print(" "); Serial.print((unsigned char)text[0][i]);
if ((unsigned char)text[0][i] == 248)
Serial.println(" - MATCH!");
else
Serial.println();
}
//FullTest();
Serial.println("\n-------------------------\n");
*/
//while(1);
Serial.println(str);
Serial.print(str2); Serial.print(" ");
Serial.println(strlen(str2));
char hex[3];
strncpy(hex, &(str2[0]), 2);
hex[2] = '\0';
const char* val = &(hex)[0];
Serial.println(hex);
Serial.print("hex: "); Serial.println((const char*)hex);
Serial.println((int16_t)val);
int hexVal = StrToHex("F8");
Serial.println(hexVal);
Serial.println("\n-------------------------\n");
int16_t value = 253; // Example >255 value
char bytes[3];
bytes[0] = (char)(value >> 8); // High byte
bytes[1] = (char)(value & 0xFF); // Low byte
bytes[2] = '\0';
// To reconstruct:
int16_t reconstructed = (bytes[0] << 8) | bytes[1];
Serial.print("reconstructed: "); Serial.println(reconstructed);
Serial.println((char)reconstructed);
int val1 = (unsigned char)str3[0];
Serial.println(val1);
}
/*
String s = "\u2588";
const char* ae_lo = "\u00E6"; // æ
const char* ae_up = "\u00C6";
char hex[3];
const char str[] = "\u00E6\u00C6";
const char* letters[] = {
"\u00E6", "\u00C6", // æ / Æ
"\u00F8", "\u00D8", // ø / Ø
"\u00E5", "\u00C5" // å / Å
};
const char* t9[3][3] = {
{"\u00E6", "\u00F8", "\u00E5"},
{"\u00C6", "\u00D8", "\u00C5"},
{"","",""},
};
const char myTxt[] = "abcdefghijklmnopqrstuvwxyz\u00E6\u00F8\u00E5";
const char* getAscii(char* str, char dst[] = hex) {
strcpy(dst, str);
dst[2] = '\0';
return (const char*)dst;
}
int16_t parseHexChar(const char* hexStr) {
return (int16_t)strtol(hexStr, NULL, 16);
}
void setup() {
Serial.begin(9600);
for (int i=0; i<strlen(myTxt); i++) {
if (!isAscii(myTxt[i])) {
const char* ae = getAscii( &(myTxt[i++]) );
Serial.println(i), Serial.print(": "),
Serial.println(ae);
}
}
const char* aee = &(hex[0]);
Serial.print("ae: "); Serial.println(aee);
unsigned char hx[2];
hx[0] = hex[0];
hx[1] = hex[1];
Serial.println(hx);
char buffer[3];
unsigned char number[2];
memcpy(number, 2, hex);
sprintf(buffer, "%02X", number);
Serial.print("sprintf: "); Serial.println(buffer);
Serial.println("\xC3");
const char* ae = getAscii( &(myTxt[26]) );
Serial.print("ae: "); Serial.println(atoi(ae));
Serial.print("int: "); Serial.println(parseHexChar("E5"));
char tx_data[3];
sprintf(tx_data, "%02X", ae);
Serial.println(tx_data);
char x[] = "\xE6";
long y = strtol(&x[3], 0,16);
Serial.println(y);
*/
/*
Serial.print("ae[0]: "); Serial.println((int)ae[0], HEX);
Serial.print("ae[1]: "); Serial.println((int)ae[1], HEX);
Serial.println("\xE6");
int hexbyt = 0xE6;
Serial.write(hexbyt);
uint8_t src = 0xE6; // source byte ( DEC 107 | BIN 0b1101011 )
src &= 0b1111; // isolate lower 4 bits with bitmask; result: 1011
src = src & (1 << 8)-1; // isolate 6 lower bits; result: 101011
Serial.println(src, HEX);
*/
//getAscii("hello mate!", 6);
//Serial.println(getAscii(myTxt, 26));
/*
while(1);
for (int i=0; i<strlen(myTxt); i++)
if (!isAscii(myTxt[i]))
Serial.print(i), Serial.print(" "), Serial.println(myTxt[i]);
while(1);
for (int i=0; i<strlen(myTxt); i++) {
Serial.print(myTxt[i]);
Serial.print(",");
//Serial.println(isAscii(myTxt[i]));
}
Serial.println();
for (int i=0; i<strlen(myTxt); i++) {
Serial.print((isAscii(myTxt[i]))?"1":"0");
Serial.print(",");
//Serial.println(isAscii(myTxt[i]));
}
Serial.println();
*/
/*
Serial.println(str);
for (int i=0; i<ArrLen(letters); i++) {
Serial.println(letters[i]);
}
Serial.println(letters[0][0]);
*/
/*
Serial.println(s);
Serial.println(ae_lo);
strcpy(hex, ae_lo);
Serial.println(hex);
Serial.print(hex[0], HEX); Serial.print(" "); Serial.println(hex[1], HEX);
Serial.print(0xC3); Serial.print(" "); Serial.println(0xA6);
Serial.print((char)195); Serial.print(" "); Serial.println((char)166);
}
*/
void loop() {
// put your main code here, to run repeatedly:
}