中文汉字转成ascii码

guoke1 2014-05-13 10:03:57
请教c语言中 中文汉字怎么转换成ascii码 谢谢
...全文
1339 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2014-05-14
  • 打赏
  • 举报
回复
引用 9 楼 zhangwuji154 的回复:
同一个汉字,不同的编码,有不同的值
比如:啊 GBK:0xB0 0xA1,Unicode-16 LE:0x4A 0x55,Unicode-16 BE:0x55 0x4A,UTF-8:0xE5 0x95 0x8A
buyong 2014-05-14
  • 打赏
  • 举报
回复
wchar
zhangwuji154 2014-05-14
  • 打赏
  • 举报
回复
同一个汉字,不同的编码,有不同的值
赵4老师 2014-05-14
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>
int main() {
    int i,v;
    char bs[33];
    char b[33];
    char hs[9];
    char h[9];
    char s[4];
    char *e;

// 十进制整数转二进制串;
    i=1024;
    ltoa(i,b,2);
    sprintf(bs,"%032s",b);
    printf("i=%d,bs=%s\n",i,bs);
// 十进制整数转十六进制串;
    i=1024;
    ltoa(i,h,16);
    sprintf(hs,"%08s",h);
    printf("i=%d,hs=%s\n",i,hs);
// 十六进制字符串转成十进制数
    strcpy(hs,"00000400");
    sscanf(hs,"%x",&i);
    printf("hs=%s,i=%d\n",hs,i);
// 二进制字符串转化为十六进制字符串;
    strcpy(bs,"00000000000000000000010000000000");
    i=strtol(bs,&e,2);
    ltoa(i,h,16);
    sprintf(hs,"%08s",h);
    printf("bs=%s,hs=%s\n",bs,hs);
// 二进制字符串转化为十进制数;
    strcpy(bs,"00000000000000000000010000000000");
    i=strtol(bs,&e,2);
    printf("bs=%s,i=%d\n",bs,i);
// 十六进制字符串转成二进制串
    strcpy(hs,"00000400");
    sscanf(hs,"%x",&i);
    ltoa(i,b,2);
    sprintf(bs,"%032s",b);
    printf("hs=%s,bs=%s\n",hs,bs);
// ASC\GBK字符串转十六进制串
    strcpy(s,"a汉");
    i=0;
    while (1) {
        if (0==s[i]) break;
        sprintf(hs+i*2,"%02X",(unsigned char)s[i]);
        i++;
    }
    setlocale(LC_ALL,"chs");
    printf("s=%s,hs=%s\n",s,hs);
// 十六进制字符串转成汉字(GBK)及字符(ASC)
    strcpy(hs,"61BABA");
    i=0;
    while (1) {
        if (1!=sscanf(hs+i*2,"%2x",&v)) break;
        s[i]=(char)v;
        i++;
    }
    s[i]=0;
    printf("hs=%s,s=%s\n",hs,s);

    return 0;

}
//i=1024,bs=00000000000000000000010000000000
//i=1024,hs=00000400
//hs=00000400,i=1024
//bs=00000000000000000000010000000000,hs=00000400
//bs=00000000000000000000010000000000,i=1024
//hs=00000400,bs=00000000000000000000010000000000
//s=a汉,hs=61BABA
//hs=61BABA,s=a汉
Symfund 2014-05-14
  • 打赏
  • 举报
回复
你可能想表达:怎样将单字节编码的汉字转成unicode编码,这个还比较实际!
Symfund 2014-05-14
  • 打赏
  • 举报
回复
你将复数转成实数,有什么意义呢?
zybjtu 2014-05-14
  • 打赏
  • 举报
回复
ascII 码范围是0-127的 汉字是多字节的。 ascii的范围不够表示汉字啊
guoke1 2014-05-14
  • 打赏
  • 举报
回复
引用 3 楼 ForestDB 的回复:
LZ得先看点编码的只是。
有问题请指教
ForestDB 2014-05-13
  • 打赏
  • 举报
回复
LZ得先看点编码的只是。
guoke1 2014-05-13
  • 打赏
  • 举报
回复
unsigned char tmp[100]; strcpy(tmp,"中文"); for(i=0;i<strlen(Tmp);i++) { sprintf( buffer+i*2, "%2.2x", Tmp+i ); } 我是这么处理的, 得出的ascii 有问题。
mangoalx 2014-05-13
  • 打赏
  • 举报
回复
你是问怎么当ascii码处理吧?中文是16位编码,直接当两个ascii码处理好了。如果转,中文信息不全丢了么。

69,381

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧