如何将UTF-16转换为ASCII

Yun*_*zel 5 unicode assembly ascii mips

我正在用MIPS汇编语言编写子程序,将ASCII转换为UTF-16,反之亦然.但是,我找不到任何技巧如何转换它.

谢谢你的任何想法.

Phi*_*ipp 6

伪代码,假设您的字节是八位字节并且不需要零终止:

从ASCII转换为UTF-16

  1. 给定长度为n(以字节为单位)的ASCII输入字符串,在地址p的存储器中顺序存储.
  2. 分配2× n字节的内存; 让那个记忆的起始地址为q.
  3. n大于零时:
    1. 检查p处的字节是否是有效的ASCII字符.如果不使用校验和,则最高有效位必须为零,否则必须是正确的校验和.如果字节无效,则发出错误.
    2. p处的字节零扩展为q处的16位字.如何完成取决于指令集; 例如,x86有MOVZX.您还可以注意正确的字节顺序.
    3. 递增p 1.
    4. 递增q 2.
    5. n减1.

从UTF-16到ASCII的无损转换

  1. 给定长度为n的UTF-16输入字符串(以代码为单位),顺序存储在地址p的存储器中.
  2. 分配n个字节的内存; 让那个记忆的起始地址为q.
  3. n大于零时:
    1. 检查p处的16位字是否代表有效的ASCII字符.九个最高有效位必须为零,否则该字符在ASCII中不可表示.如果单词无效,则发出错误.
    2. p的16位字的最低有效字节移到q的字节.
    3. 如果需要,在q处为字节添加校验和.
    4. 递增p 2.
    5. 递增q 1.
    6. n减1.