ATJ2157ATJ2127音乐按文件名拼音排序---标案是按内码进行排序

news/2024/4/24 2:07:13/文章来源:https://blog.csdn.net/sikuon/article/details/128096625

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

  • 参考网站
  • 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 <stdio.h>
#include <stdlib.h>
#include <string.h>
/* 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平台代码

联系作者获取

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_38839.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

activiti-api

activiti-api目录概述需求&#xff1a;设计思路实现思路分析1.VariableEvent2.EmptyResult3.BPMNElement4.BPMNError5.ConnectorAbstractSecurityManager参考资料和推荐阅读Survive by day and develop by night. talk for import biz , show your perfect code,full busy&…

Mac下安装Hadoop

1、引言 如果想在Mac下安装Hadoop而且让Hadoop能正常运行&#xff0c;那安装之前需要先安装java&#xff0c;在Mac环境下安装Hadoop。 2、配置ssh环境 在Mac下如果想使用Hadoop&#xff0c;必须要配置ssh环境&#xff0c; 如果不执行这一步&#xff0c;后面启动hadoop时会出现…

PyCharm+PyQT5之三界面与逻辑的分离

之二的例程已经实现了界面与逻辑的分离,所建立的 Dialog Mainwindow 或者 widgets 等,界面改变其主调程序(暂且这样叫)更改,或者不需要大规模更改, 主调函数的程序是这样的 import sys import FistUI from PyQt5.QtWidgets import QApplication, QMainWindow,QDialog if __nam…

解决 Android WebView 多进程导致App崩溃

应用场景 应用内有两个位置用到WebView加载页面&#xff0c;具体处理逻辑不能通用。分别扩展了WebView了。应用内独立页面使用Fragment来展示,(采用单Activity架构&#xff09;。应用提供切换语言功能。 问题猜想 一、WebView内核bug 具体路径&#xff1a; 进入app–>设…

cmake使用

1. cmake概述及例子 CMake快速入门 cmake、qmake、cl之间关系 1.1 各种cmake cmake根据CMakeLists.txt生成makefile&#xff0c;make根据makefile行编译。 1.1.1 最简cmake&#xff1a;生成可执行程序&#xff08;一个文件&#xff09; #CMakeLists.txt cmake_minimum_req…

debug - JLX12864C(ST7920-12864)液晶屏不能使用串行通讯的原因

文章目录debug - JLX12864C(ST7920-12864)液晶屏不能使用串行通讯的原因概述调试备注ENDdebug - JLX12864C(ST7920-12864)液晶屏不能使用串行通讯的原因 概述 正在给板子写出厂测试程序, 买的12864型号是JLX12864C. STC官方给的例程是并行通讯, 好使. 但是想在测试程序中改为…

[附源码]计算机毕业设计springboot基于Java的日用品在线电商平台

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

mybatis的xml中<trim>标签的用法

文章目录1. 前言2. 先说结论3. 验证1. 情况一2. 情况二3. 情况三4. 情况四5. 验证prefixOverrides去掉的是trim内原sql内容1. 前言 在工作中离不开跟数据库打交道&#xff0c;目前流行的固然是mybatis&#xff0c;在xml中写sql的时候&#xff0c;可能会出现下面情况&#xff1a…

CAS:1516551-46-4,BCN-琥珀酰亚胺酯,BCN-NHS点击试剂供应

一&#xff1a;产品描述 1、名称&#xff1a; BCN-NHS BCN-活性酯 BCN-NHS 酯 丙烷环辛炔-活性酯 BCN-琥珀酰亚胺酯 BCN-succinimidylester 2、CAS编号&#xff1a;1516551-46-4 3、质量控制&#xff1a;95% 4、分子量&#xff1a;291.30 5、分子式&#xff1a;C15H…

Windows本地安装Redis且设置服务自启

redis中文网&#xff1a;http://redis.cn/ 如果是安装Windows版的redis需要去GitHub上下载安装包 如果是在Linux上安装&#xff0c;可以直接使用命令进行安装 本次教程是基于Windows系统进行的 GitHub地址&#xff1a;https://github.com/microsoftarchive/redis 选择需要下…

基于神经网络彩色图像插值研究-附Matlab程序

⭕⭕ 目 录 ⭕⭕✳️ 一、引言✳️ 二、色彩过滤阵列CFA✳️ 三、BP网络结构✳️ 四、神经网络彩色图像插值实验验证✳️ 五、参考文献✳️ 六、Matlab程序获取与验证✳️ 一、引言 彩色图像插值是通过估算相邻像素来估计缺失的颜色分量的过程&#xff0c;数字相机通过色彩过滤…

[附源码]Python计算机毕业设计Django大学生创新项目管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

你知道吗?小程序组件≠小程序插件

一直以为小程序组件和小程序插件是一回事&#xff0c;只是措辞不一样&#xff0c;导致造成乌龙&#xff0c;其实完全是两回事&#xff0c;插件是可以直接提供服务的&#xff0c;组件是给开发者提供的轮子&#xff0c;不能直接提供服务。 先看看微信是如何定义小程序插件的&…

Quartz深度实战

概述 Java语言中最正统的任务调度框架&#xff0c;几乎是首选。后来和Spring Schedule平分秋色&#xff1b;再后来会被一些轻量级的分布式任务调度平台&#xff0c;如XXL-Job取代。另外近几年Quartz的维护和发布几乎停滞&#xff0c;但这并不意味着Quartz被淘汰&#xff0c;还…

【SVM时序预测】基于matlab鲸鱼算法优化支持向量机SVM时序数据预测【含Matlab源码 2250期】

⛄一、鲸鱼算法优化支持向量机SVM 1 鲸鱼优化算法 WOA是由Mirjalili和Lewis在2016年提出的一种较为新颖的元启发式群体智能优化算法&#xff0c;该算法模仿座头鲸的“螺旋气泡网”捕食策略&#xff0c;如图1所示。 图1 座头鲸“螺旋起泡网”捕食策略 WOA算法寻优步骤如下。 步…

【在线研讨会】12月12日Softing工业物联网解决方案 助力工业4.0

本次研讨会设有抽奖环节&#xff0c;并有精美礼品相送&#xff01; 一 会议介绍 水平和垂直通信一体化是工业4.0背后的核心原则之一&#xff0c;实现这一点需要标准化通信接口&#xff0c;这些接口能够促进各种组件的相互连接并传输同步数据流。本次研讨会将提供解决方案将过程…

《联邦学习实战—杨强》之使用Python从零开始实现一个简单的横向联邦学习模型

文章目录前言环境准备完整代码配置文件(conf.json)获取数据集(datasets.py)获取PyTorch中自带深度学习网络预训练模型(models.py)客户端(client.py)服务端(server.py)main.py运行知识点补充argparse基本用法tensor.copy_()[Python dict() 函数](https://www.runoob.com/python/…

域自适应——Bidirectional Learning for Domain Adaptation of Semantic Segmentation

论文题目&#xff1a;Bidirectional Learning for Domain Adaptation of Semantic Segmentation 本文的域位移是针对虚拟数据和真实数据之间的。 本文的贡献是&#xff1a; 提出了一种语义分割的双向学习系统 &#xff0c;其是一个学习分割适应模型和图像翻译模型的闭环学习系…

nVisual部署之nginx配置说明

Nginx 是一个高性能的HTTP和反向代理web服务器&#xff0c;因此nvisual在部署前端包时便采用了它作为服务器&#xff0c;版本使用1.14.1以上。在默认的配置下&#xff0c;还需要向nginx各模块添加配置才能达到生产需要。 接下来&#xff0c;从http模块开始&#xff0c;再到ser…

谷粒商城1.项目简介和项目环境预搭建(项目概述和环境搭建代码)

一.商城项目总体架构 从讲课篇看 从分块来看 项目知识概述 二.环境搭建代码 1.项目架构 建立父工程 pom文件 <description>聚合服务</description><packaging>pom</packaging><modules><module>gulimall-coupon</module><mo…