ascii(16进制)转换utf8(16进制)

博客介绍了在特定情况下将ASCII的16进制形式转换为UTF8的16进制代码实现,提供了一个简化的示例,主要针对0000 0080-0000 07FF的UCS-4范围。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

随便写了一个能用的,没怎么完善。

在某系情况下的ascii(16进制)转换utf8(16进制)的代码

   UCS-4 range (hex.)           UTF-8 octet sequence (binary)
   0000 0080-0000 07FF       110xxxxx 10xxxxxx

void  a2u( char   * sr)
{
    
long int srNum;
    
char des[32]="o";
    
char *pdes = des;
    
char *temp = NULL;
    
int i = 0;
    
int all =strlen(sr) ;
    
for(i = 0; i<all; i++)
    
{
        
switch(*sr)
        
{
            
case '0': strcat(des,"0000");break;
            
case '1': strcat(des,"0001");break;
            
case '2': strcat(des,"0010");break;
            
case '3': strcat(des,"0011");break;
            
case '4': strcat(des,"0100");break;
            
case '5': strcat(des,"0101");break;
            
case '6': strcat(des,"0110");break;
            
case '7': strcat(des,"0111");break;
            
case '8': strcat(des,"1000");break;
            
case '9': strcat(des,"1001");break;
            
case 'a': strcat(des,"1010");break;
            
case 'b': strcat(des,"1011");break;
            
case 'c': strcat(des,"1100");break;
            
case 'd': strcat(des,"1101");break;
            
case 'e': strcat(des,"1110");break;
            
case 'f':  strcat(des,"1111");break;

            
default:
                printf(
"NULL ");break;
                
        }

        sr
++;
    }

    printf(
"des1 [%s] ",des);
    
for(i = 0 ; i<5 ; i++)
    
{
        des[
3+i] = des[5+i];
    }

    des[
0= '1';
    des[
1= '1';
    des[
2= '0';
    des[
8= '1';
    des[
9= '0';
    printf(
"des2 [%s] ",des);
     printf(
"%x ",strtol( des , &temp , 2 ) );
    
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值