SumProject/my_error/testunicodephone.cpp

49 lines
1.1 KiB
C++
Raw Normal View History

2025-03-22 22:38:52 +08:00
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
void str_to_unicode(const char *input, uint8_t *output) {
uint16_t unicode;
uint8_t *ptr = output;
while (*input) {
// UTF-8 ת Unicode<64><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
if ((*input & 0xE0) == 0xE0) { // 3<>ֽ<EFBFBD>UTF-8<>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD>
unicode = ((input[0] & 0x0F) << 12) | ((input[1] & 0x3F) << 6) | (input[2] & 0x3F);
input += 3;
} else if ((*input & 0xC0) == 0xC0) { // 2<>ֽ<EFBFBD>UTF-8<>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>չ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
unicode = ((input[0] & 0x1F) << 6) | (input[1] & 0x3F);
input += 2;
} else { // 1<>ֽ<EFBFBD>ASCII<49>ַ<EFBFBD>
unicode = *input;
input += 1;
}
// ת<><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>UTF-16BE<42><45>
*ptr++ = (unicode >> 8) & 0xFF;
*ptr++ = unicode & 0xFF;
}
*ptr = '\0'; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
int main()
{
int n;
// string s;
uint8_t a[10005];
char s[100005];
// cin>>s;
scanf("%s",s);
int i=-1;
char sc[1005];
str_to_unicode(s,a);
for(int i=0;i<=100;i++)
{
printf("%X",a[i]);
}
while(s[++i])
{
sprintf(sc+i*4,"00%X",s[i]);
printf("00%X",s[i]);
}
printf("\n%s",sc);
}