zoukankan      html  css  js  c++  java
  • 二进制,十进制,十六进制输出

    #include<stdio.h>
    #include<string.h>
    
    int
    unicode_to_utf( unsigned long unicode, unsigned char *utf )
    {
        //assert( utf );
     
        int size = 0;
        if ( unicode <= 0x7F )
        {
            *( utf + size++ ) = unicode & 0x7F;
        }
        else if ( unicode >= 0x80 && unicode <= 0x7FF )
        {
            *( utf + size++ ) = ( ( unicode >> 6 ) & 0x1F ) | 0xC0;
            *( utf + size++ ) = ( unicode & 0x3F ) | 0x80;
        }
        else if ( unicode >= 0x800 && unicode <= 0xFFFF )
        {
            *( utf + size++ ) = ( ( unicode >> 12 ) & 0x0F ) | 0xE0;
            *( utf + size++ ) = ( ( unicode >> 6  ) & 0x3F ) | 0x80;
            *( utf + size++ ) = ( unicode & 0x3F  ) | 0x80;
        }
        else if ( unicode >= 0x10000 && unicode <= 0x10FFFF )
        {
            *( utf + size++ ) = ( (unicode >> 18 ) & 0x7  ) | 0xF0;
            *( utf + size++ ) = ( (unicode >> 12 ) & 0x3F ) | 0x80;
            *( utf + size++ ) = ( (unicode >> 6  ) & 0x3F ) | 0x80;
            *( utf + size++ ) = ( unicode & 0x3F ) | 0x80;
        }
        else if ( unicode >= 0x200000 && unicode <= 0x3FFFFFF )
        {
            *( utf + size++ ) = ( (unicode >> 24 ) & 0x3  ) | 0xF8;
            *( utf + size++ ) = ( (unicode >> 18 ) & 0x3F ) | 0x80;
            *( utf + size++ ) = ( (unicode >> 12 ) & 0x3F ) | 0x80;
            *( utf + size++ ) = ( (unicode >> 6  ) & 0x3F ) | 0x80;
            *( utf + size++ ) = ( unicode & 0x3F ) | 0x80;
        }
        else if ( unicode >= 0x4000000 && unicode <= 0x7FFFFFFF )
        {
            *( utf + size++ ) = ( (unicode >> 30 ) & 0x1  ) | 0xFC;
            *( utf + size++ ) = ( (unicode >> 24 ) & 0x3F ) | 0x80;
            *( utf + size++ ) = ( (unicode >> 18 ) & 0x3F ) | 0x80;
            *( utf + size++ ) = ( (unicode >> 12 ) & 0x3F ) | 0x80;
            *( utf + size++ ) = ( (unicode >> 6  ) & 0x3F ) | 0x80;
            *( utf + size++ ) = ( unicode & 0x3F ) | 0x80;
        }
        else
        {
            printf( "Error : unknow scope
    " );
            return -1;
        }
        *( utf + size ) = '';
     
        return size;
    }
    
    void
    utf_print( unsigned char *utf, int size )
    {
        if ( size == -1 )
        {
            printf( "unknow scope
    " );
            return;
        }
     
        int index = 0;
        for ( ; index < size; index += 1 )
        {
            printf( "%X",  *( utf + index) );
        }
     
        printf( "
    " );
    }
    
     int
    main( int argc, char *argv[] )
    {
        unsigned long unicode1 = 55;
        unsigned char utf[7] = { 0 };
        int size = unicode_to_utf( unicode1, utf );
        utf_print( utf, size );
     
        unsigned long unicode2 = 123;
        size = unicode_to_utf( unicode2, utf );
        utf_print( utf, size );
     
        memset( utf, 0x00, sizeof( utf ) );
        unsigned long unicode3 = 0x4E25;
        size = unicode_to_utf( unicode3, utf );
        utf_print( utf, size );
     
        memset( utf, 0x00, sizeof( utf ) );
        unsigned long unicode4 = 23456;
        size = unicode_to_utf( unicode4, utf );
        utf_print( utf, size );
     
        memset( utf, 0x00, sizeof( utf ) );
        unsigned long unicode5 = 234567;
        size = unicode_to_utf( unicode5, utf );
        utf_print( utf, size );
     
        memset( utf, 0x00, sizeof( utf ) );
        unsigned long unicode6 = 34561234;
        size = unicode_to_utf( unicode6, utf );
        utf_print( utf, size );
     
        /* error */
        memset( utf, 0x00, sizeof( utf ) );
        unsigned long unicode7 = 0x8FFFFFFF;
        size = unicode_to_utf( unicode7, utf );
        utf_print( utf, size );
     
        return 0;
    }
    root@lte:/fdsk# gcc -o utf0 utf0.c
    root@lte:/fdsk# ./utf0
    37
    7B
    E4B8A5
    E5AEA0
    F0B99187
    FA83B5B392
    Error : unknow scope
    unknow scope
  • 相关阅读:
    PipeCAD
    PipeCAD
    RvmTranslator7.4.1-Clipping Box
    RvmTranslator7.4.0-PDMS Text
    PipeCAD
    Pentaho、spagoBI 开源BI --- 以及开源 ETL 工具 Kettle、Talend
    (推荐)成都数字医健科技有限公司--医药大数据中心与生命科学情报咨询服务中心
    成都智审数据有限公司--企业内部审计专家
    数据仓库与数据分析--产品与软件商
    上海宝冶:信息化与标准化融合,助推企业转型升级
  • 原文地址:https://www.cnblogs.com/abc36725612/p/11175726.html
Copyright © 2011-2022 走看看