| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1354 人关注过本帖
标题:UTF8<>Hexadecimal 转换
只看楼主 加入收藏
DAVID78766
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2016-9-8
结帖率:0
收藏
已结贴  问题点数:20 回复次数:1 
UTF8<>Hexadecimal 转换
大家好,小弟目前使用Dev C++ 5.11

目前想透过程式

读取一个UTF8文字档

然后转出成Hex code的文字档  但输出一样是UTF8编码

同时也可以逆向操作  读取Hex code的文字档  转成原来的内容

也就是此图的1.txt跟2.txt互转:
图片附件: 游客没有浏览图片的权限,请 登录注册


请问这部分的程式码该如何撰写呢?

感谢!!

[此贴子已经被作者于2016-9-8 18:20编辑过]

2016-09-08 17:16
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:20 
不就是 'a'变61,61变'a'嘛,和UTF8没关系
从binary text document中读取一个个字节,转化为两个字符带一个空格,……
从你所谓的很么hexcode text document中读取一个个两长度的字符串,转化为一个字节,……

程序代码:
#include <stdio.h>
#include <assert.h>

void b2h( const char* b, char* h )
{
    const char* map_ = "0123456789ABCDEF";

    for( ; *b; ++b )
    {
        *h++ = map_[(unsigned char)*b/0x10];
        *h++ = map_[(unsigned char)*b%0x10];
        *h++ = ' ';
    }
    *h = '\0';
}

void h2b( const char* h, char* b )
{
    while( *h )
    {
        unsigned char sp = 0;
        for( size_t i=0; i!=2; ++h, ++i )
        {
            assert( *h );
            switch( *h )
            {
            case '0': case '1': case '2': case '3': case '4':
            case '5': case '6': case '7': case '8': case '9':
                sp = (sp*0x10) | (*h-'0');
                break;
            case 'A': case 'B': case 'C':
            case 'D': case 'E': case 'F':
                sp = (sp*0x10) | (*h-'A'+10);
                break;
            default:
                assert( 0 );
            }
        }
        *b++ = sp;

        if( !*h ) break;
        assert( *h == ' ' );
        ++h;
    }
    *b = '\0';
}

int main( void )
{
    {
        const char* bincode = "a中b";
        char hexcode[100];
        b2h( bincode, hexcode );
        puts( hexcode ); // 输出 61 D6 D0 62
    }

    {
        const char* hexcode = "61 D6 D0 62";
        char bincode[100];
        h2b( hexcode, bincode );
        puts( bincode ); // a中b
    }
}

2016-09-09 09:14
快速回复:UTF8<>Hexadecimal 转换
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.039443 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved