ATJ2157ATJ2127音乐按文件名拼音排序---标案是按内码进行排序
创始人
2024-02-29 03:37:14

音乐按文件名拼音进行排序

  • 参考网站
  • ATJ2157&ATJ2127 排序是按照内码(汉字为GBK即GBK936)排序的
  • 按拼音排序
  • unicode与拼音的对比表(U2P.DAT),需要打包到固件中
  • U2P.DAT数据结构
  • U2P.DAT生成代码是使用DEV-C++生成
  • 其他说明
  • U2P.DAT与ATJ2127平台代码

参考网站

各种字符对应表:http://www.kanji.zinbun.kyoto-u.ac.jp/~yasuoka/CJK.html
方法思路:https://blog.csdn.net/firehood_/article/details/7648625

ATJ2157&ATJ2127 排序是按照内码(汉字为GBK即GBK936)排序的

 GBK936是对GB2312编码的扩充,对汉字采用双字节编码。GBK字符集共收录21003个汉字,包含国家标准GB13000-1中的全部中日韩汉字,和BIG5编码中的所有汉字GB2312标准共收录6763个汉字,其中一级汉字3755个,二级汉字3008个同时,
GB2312收录了包括拉丁字母、希腊字母、日文平假名及片假名字母、俄语西里尔字母在内的682个全角字符
GB2312中对所收汉字进行了“分区”处理,每区含有94个汉字/符号。这种表示方式也称为区位码。
• 01-09区为特殊符号。
• 16-55区为一级汉字,按拼音排序。
• 56-87区为二级汉字,按部首/笔画排序。
• 10-15区及88-94区则未有编码

按拼音排序

要达到这个要求,必须要获取相应的拼音进行对比,或者排好序的对应关系。
为了达到编码了统一性,首先把内码转换为unicode码,然后根据unicode码获取拼音,然后比较。这就要求有一个unicode与拼音的对比表(U2P.DAT)

unicode与拼音的对比表(U2P.DAT),需要打包到固件中

U2P.DAT是根据Uni2Pinyin.Z生成的
在这个http://www.kanji.zinbun.kyoto-u.ac.jp/~yasuoka/CJK.html网站上可以找到Uni2Pinyin.Z
在这里插入图片描述

U2P.DAT数据结构

每一个unicode占32个字符,汉字编码为A对应在文件中的位置为(A-0x4e00)*32
在这里插入图片描述

U2P.DAT生成代码是使用DEV-C++生成

程序的输入文件是U2P.txt
在这里插入图片描述

#include 
#include 
#include 
/* run this program using the console pauser or add your own getch, system("pause") or input loop */int char_to_number(unsigned char *buffer)
{int data;
//		printf("buffer[3] = %X\n",buffer[3]);if ((buffer[0] >= 0x30) && (buffer[0] <= 0x39)){data = (buffer[0] - 0x30 ) * 0x1000;}else {data = (buffer[0] - 0x37 ) * 0x1000;}
//			
//		printf("data = %X\n",data);
//		
//		printf("buffer[4] = %X\n",buffer[4]);if ((buffer[1] >= 0x30) && (buffer[1] <= 0x39)){data |= (buffer[1] - 0x30 ) * 0x100;}else {data |= (buffer[1] - 0x37 ) * 0x100;}//		printf("data = %X\n",data);
//		
//		printf("buffer[5] = %X\n",buffer[5]);if ((buffer[2] >= 0x30) && (buffer[2] <= 0x39)){data |= (buffer[2] - 0x30 ) * 0x10;}else {data |= (buffer[2] - 0x37 ) * 0x10;}//	printf("data = %X\n",data);
//		//	printf("buffer[6] = %X\n",buffer[6]);if ((buffer[3] >= 0x30) && (buffer[3] <= 0x39)){data |= (buffer[3] - 0x30 ) * 0x1;}else {data |= (buffer[3] - 0x37 ) * 0x1;//	printf("abc = %X\n",(buffer[6] - 0x57 ) * 0x1);}//	printf("data = %X\n",data);return data;
}int main(int argc, char *argv[]) {unsigned char buffer[32 + 4];int i, j = 0 ;int rdata, wdata = 0;printf("argc = %d\n", argc);/*�ļ���ʽ [0x0616] = 0x0000[0x483f] = 0x0001[0x074a] = 0x0002*/FILE *fp = fopen(argv[1],"r");printf("file name = %s\n",argv[1]);if (NULL == fp){printf("open file error\n");}FILE *fpb = fopen("dec.bin","wb+");i = 0;do{memset(buffer,0,32 + 4);fgets(buffer,32 + 4,fp) ;printf("txt = %s\n",buffer);//	return ;
//		for (j = 0; j < 32; j++)
//		{
//			
//		printf("buffer[%d] = %X\n",j,buffer[j]);
//	
//			}	rdata = char_to_number(buffer);//wdata = char_to_number(buffer + 10);rdata -= 0x4e00;i++;printf("%x = 0x%04x\n",i,rdata);//	return ;//printf("%x = 0x%04x\n",i,wdata);if (rdata < 0){continue;}if (0 != fseek(fpb, rdata  * 32 , SEEK_SET)){printf("bin file seek error\n");return ;}wdata =	strlen(buffer) - 5;if (0 == fwrite(buffer + 4,wdata,1,fpb)){printf("bin file write fail\n");}} while (i < 0x51AF);fclose(fp);fclose(fpb);printf("size of data = %d\n",sizeof(wdata));return 0;
}

其他说明

这个只是针对汉字拼音排序的,当然还有其他的排序方法
如UCA+CLDR排序标准,这个比较全面,就unicode的排序标准,其中就包括汉字拼音的。暂时未研究。

U2P.DAT与ATJ2127平台代码

联系作者获取

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...