Board logo

标题: [问题求助] 关于PowerShell ascii转char码的问题 [打印本页]

作者: bylove    时间: 2023-9-10 21:01     标题: 关于PowerShell ascii转char码的问题

  1. function Asc{
  2.     param([string]$Chars)
  3.     $ecode=[System.Text.Encoding]::GetEncoding('GB2312')
  4.     $Chars.ToCharArray()|%{
  5.         [byte[]]$bytes=$ecode.GetBytes($_)
  6.         if($ecode.GetByteCount($_) -eq 2){$bytes[0]*256+$bytes[1]-65535}else{$bytes[0]}
  7.     }
  8. }
  9. function Chr{
  10.     param([int[]]$Codes)
  11.     $asccode=[System.Text.Encoding]::GetEncoding('GB2312')
  12.     $Codes|%{
  13.         [byte[]]$bytes=[System.BitConverter]::GetBytes($_)
  14.         if($_ -le 0 -or $_ -gt 255){
  15.             [byte[]]$chrbyte=New-Object byte[] 2
  16.             $chrbyte[0]=$bytes[1]
  17.             $chrbyte[1]=$bytes[0]
  18.         }else{
  19.             [byte[]]$chrbyte=New-Object byte[] 1
  20.             $chrbyte[0]=$bytes[0]                        
  21.         }
  22.         $asccode.GetString($chrbyte)
  23.     }
  24. }
  25. chr (asc '你好')
复制代码
这个代码有问题,返回值不对,应该返回你好,但返回错了,不知道哪里写的有问题?
作者: Five66    时间: 2023-9-10 21:37

试试第六行去掉-65535
作者: Nsqs    时间: 2023-9-10 22:32

本帖最后由 Nsqs 于 2023-9-10 22:33 编辑

回复 2# Five66


    不是删掉,改-65536就对了
作者: bylove    时间: 2023-9-10 23:02

回复 3# Nsqs


    谢谢,是对的,但是有新的问题出现,下面是代码
  1. Function ConvertTo-Pinyin{
  2.     param(
  3.         [Parameter(ValueFromPipeline)]
  4.         [string[]]$InputObject
  5.     )
  6.     begin{
  7.         [System.Collections.Generic.List[string]]$pinyin=@{}
  8.     }
  9.     process{        
  10.         switch($InputObject.ToCharArray()){
  11.             {$_ -ge 21834 -and $_ -le 38463}{$pinyin.Add('a')}
  12.             {$_ -ge 22467 -and $_ -le 38552}{$pinyin.Add('ai')}
  13.             {$_ -ge 38797 -and $_ -le 26696}{$pinyin.Add('an')}
  14.             {$_ -ge 32942 -and $_ -le 30414}{$pinyin.Add('ang')}
  15.             {$_ -ge 20985 -and $_ -le 28595}{$pinyin.Add('ao')}
  16.             {$_ -ge 33453 -and $_ -le 29240}{$pinyin.Add('ba')}
  17.             {$_ -ge 30333 -and $_ -le 31255}{$pinyin.Add('bai')}
  18.             {$_ -ge 26001 -and $_ -le 32458}{$pinyin.Add('ban')}
  19.             {$_ -ge 37030 -and $_ -le 35876}{$pinyin.Add('bang')}
  20.             {$_ -ge 33502 -and $_ -le 29190}{$pinyin.Add('bao')}
  21.             {$_ -ge 26479 -and $_ -le 34987}{$pinyin.Add('bei')}
  22.             {$_ -ge 22868 -and $_ -le 31528}{$pinyin.Add('ben')}
  23.             {$_ -ge 23849 -and $_ -le 36856}{$pinyin.Add('beng')}
  24.             {$_ -ge 36924 -and $_ -le 38491}{$pinyin.Add('bi')}
  25.             {$_ -ge 38829 -and $_ -le 36941}{$pinyin.Add('bian')}
  26.             {$_ -ge 26631 -and $_ -le 34920}{$pinyin.Add('biao')}
  27.             {$_ -ge 40150 -and $_ -le 30250}{$pinyin.Add('bie')}
  28.             {$_ -ge 24428 -and $_ -le 25672}{$pinyin.Add('bin')}
  29.             {$_ -ge 20853 -and $_ -le 24182}{$pinyin.Add('bing')}
  30.             {$_ -ge 29627 -and $_ -le 21340}{$pinyin.Add('bo')}
  31.             {$_ -ge 21754 -and $_ -le 24598}{$pinyin.Add('bu')}
  32.             {$_ -ge 25830 -and $_ -le 25830}{$pinyin.Add('ca')}
  33.             {$_ -ge 29468 -and $_ -le 34081}{$pinyin.Add('cai')}
  34.             {$_ -ge 39184 -and $_ -le 28799}{$pinyin.Add('can')}
  35.             {$_ -ge 33485 -and $_ -le 34255}{$pinyin.Add('cang')}
  36.             {$_ -ge 25805 -and $_ -le 33609}{$pinyin.Add('cao')}
  37.             {$_ -ge 21397 -and $_ -le 27979}{$pinyin.Add('ce')}
  38.             {$_ -ge 23618 -and $_ -le 36461}{$pinyin.Add('ceng')}
  39.             {$_ -ge 25554 -and $_ -le 35815}{$pinyin.Add('cha')}
  40.             {$_ -ge 25286 -and $_ -le 35962}{$pinyin.Add('chai')}
  41.             {$_ -ge 25600 -and $_ -le 39076}{$pinyin.Add('chan')}
  42.             {$_ -ge 26124 -and $_ -le 20513}{$pinyin.Add('chang')}
  43.             {$_ -ge 36229 -and $_ -le 28818}{$pinyin.Add('chao')}
  44.             {$_ -ge 36710 -and $_ -le 28552}{$pinyin.Add('che')}
  45.             {$_ -ge 37108 -and $_ -le 34924}{$pinyin.Add('chen')}
复制代码
这个是将负数跑完后的结果,我测试过,改成-65536后确实有效果,结果正确,但修改上面的代码后,没有返回值是为什么?
作者: bylove    时间: 2023-9-10 23:03

  1.             {$_ -ge 25745 -and $_ -le 31204}{$pinyin.Add('cheng')}
  2.             {$_ -ge 21507 -and $_ -le 28861}{$pinyin.Add('chi')}
  3.             {$_ -ge 20805 -and $_ -le 23456}{$pinyin.Add('chong')}
  4.             {$_ -ge 25277 -and $_ -le 33261}{$pinyin.Add('chou')}
  5.             {$_ -ge 21021 -and $_ -le 22788}{$pinyin.Add('chu')}
  6.             {$_ -ge 25571 -and $_ -le 25571}{$pinyin.Add('chuai')}
  7.             {$_ -ge 24029 -and $_ -le 20018}{$pinyin.Add('chuan')}
  8.             {$_ -ge 30126 -and $_ -le 21019}{$pinyin.Add('chuang')}
  9.             {$_ -ge 21561 -and $_ -le 22402}{$pinyin.Add('chui')}
  10.             {$_ -ge 26149 -and $_ -le 34850}{$pinyin.Add('chun')}
  11.             {$_ -ge 25139 -and $_ -le 32496}{$pinyin.Add('chuo')}
  12.             {$_ -ge 30133 -and $_ -le 27425}{$pinyin.Add('ci')}
  13.             {$_ -ge 32874 -and $_ -le 19995}{$pinyin.Add('cong')}
  14.             {$_ -ge 20945 -and $_ -le 20945}{$pinyin.Add('cou')}
  15.             {$_ -ge 31895 -and $_ -le 20419}{$pinyin.Add('cu')}
  16.             {$_ -ge 36479 -and $_ -le 31388}{$pinyin.Add('cuan')}
  17.             {$_ -ge 25703 -and $_ -le 32736}{$pinyin.Add('cui')}
  18.             {$_ -ge 26449 -and $_ -le 23544}{$pinyin.Add('cun')}
  19.             {$_ -ge 30923 -and $_ -le 38169}{$pinyin.Add('cuo')}
  20.             {$_ -ge 25645 -and $_ -le 22823}{$pinyin.Add('da')}
  21.             {$_ -ge 21574 -and $_ -le 24608}{$pinyin.Add('dai')}
  22.             {$_ -ge 32829 -and $_ -le 34507}{$pinyin.Add('dan')}
  23.             {$_ -ge 24403 -and $_ -le 26723}{$pinyin.Add('dang')}
  24.             {$_ -ge 20992 -and $_ -le 30423}{$pinyin.Add('dao')}
  25.             {$_ -ge 24503 -and $_ -le 30340}{$pinyin.Add('de')}
  26.             {$_ -ge 36460 -and $_ -le 37011}{$pinyin.Add('deng')}
  27.             {$_ -ge 22564 -and $_ -le 32532}{$pinyin.Add('di')}
  28.             {$_ -ge 39072 -and $_ -le 27583}{$pinyin.Add('dian')}
  29.             {$_ -ge 30857 -and $_ -le 35843}{$pinyin.Add('diao')}
  30.             {$_ -ge 36300 -and $_ -le 31260}{$pinyin.Add('die')}
  31.             {$_ -ge 19969 -and $_ -le 35746}{$pinyin.Add('ding')}
  32.             {$_ -ge 20002 -and $_ -le 20002}{$pinyin.Add('diu')}
  33.             {$_ -ge 19996 -and $_ -le 36144}{$pinyin.Add('dong')}
  34.             {$_ -ge 21457 -and $_ -le 29648}{$pinyin.Add('fa')}
  35.             {$_ -ge 34281 -and $_ -le 27867}{$pinyin.Add('fan')}
  36.             {$_ -ge 22346 -and $_ -le 25918}{$pinyin.Add('fang')}
  37.             {$_ -ge 33778 -and $_ -le 36153}{$pinyin.Add('fei')}
  38.             {$_ -ge 33452 -and $_ -le 31914}{$pinyin.Add('fen')}
  39.             {$_ -ge 20016 -and $_ -le 20964}{$pinyin.Add('feng')}
  40.             {$_ -ge 20315 -and $_ -le 20315}{$pinyin.Add('fo')}
  41.             {$_ -ge 21542 -and $_ -le 21542}{$pinyin.Add('fou')}
  42.             {$_ -ge 22827 -and $_ -le 21648}{$pinyin.Add('fu')}
  43.             {$_ -ge 22134 -and $_ -le 22030}{$pinyin.Add('ga')}
  44.             {$_ -ge 35813 -and $_ -le 28297}{$pinyin.Add('gai')}
  45.             {$_ -ge 24178 -and $_ -le 36195}{$pinyin.Add('gan')}
  46.             {$_ -ge 20872 -and $_ -le 26464}{$pinyin.Add('gang')}
  47.             {$_ -ge 31705 -and $_ -le 21578}{$pinyin.Add('gao')}
  48.             {$_ -ge 21733 -and $_ -le 21508}{$pinyin.Add('ge')}
  49.             {$_ -ge 32473 -and $_ -le 32473}{$pinyin.Add('gei')}
  50.             {$_ -ge 26681 -and $_ -le 36319}{$pinyin.Add('gen')}
  51.             {$_ -ge 32789 -and $_ -le 26775}{$pinyin.Add('geng')}
  52.             {$_ -ge 24037 -and $_ -le 20849}{$pinyin.Add('gong')}
  53.             {$_ -ge 38057 -and $_ -le 22815}{$pinyin.Add('gou')}
  54.             {$_ -ge 36764 -and $_ -le 38599}{$pinyin.Add('gu')}
  55.             {$_ -ge 21038 -and $_ -le 35074}{$pinyin.Add('gua')}
  56.             {$_ -ge 20054 -and $_ -le 24618}{$pinyin.Add('guai')}
  57.             {$_ -ge 26874 -and $_ -le 36143}{$pinyin.Add('guan')}
  58.             {$_ -ge 20809 -and $_ -le 36891}{$pinyin.Add('guang')}
  59.             {$_ -ge 29808 -and $_ -le 21053}{$pinyin.Add('gui')}
  60.             {$_ -ge 36746 -and $_ -le 26829}{$pinyin.Add('gun')}
  61.             {$_ -ge 38149 -and $_ -le 36807}{$pinyin.Add('guo')}
  62.             {$_ -ge 21704 -and $_ -le 31810}{$pinyin.Add('ha')}
  63.             {$_ -ge 39608 -and $_ -le 39559}{$pinyin.Add('hai')}
  64.             {$_ -ge 37219 -and $_ -le 27721}{$pinyin.Add('han')}
  65.             {$_ -ge 22831 -and $_ -le 33322}{$pinyin.Add('hang')}
  66.             {$_ -ge 22741 -and $_ -le 28009}{$pinyin.Add('hao')}
  67.             {$_ -ge 21621 -and $_ -le 36154}{$pinyin.Add('he')}
  68.             {$_ -ge 22079 -and $_ -le 40657}{$pinyin.Add('hei')}
  69.             {$_ -ge 30165 -and $_ -le 24680}{$pinyin.Add('hen')}
  70.             {$_ -ge 21756 -and $_ -le 24658}{$pinyin.Add('heng')}
  71.             {$_ -ge 36720 -and $_ -le 32418}{$pinyin.Add('hong')}
  72.             {$_ -ge 21897 -and $_ -le 21518}{$pinyin.Add('hou')}
  73.             {$_ -ge 21628 -and $_ -le 25143}{$pinyin.Add('hu')}
  74.             {$_ -ge 33457 -and $_ -le 35805}{$pinyin.Add('hua')}
  75.             {$_ -ge 27088 -and $_ -le 22351}{$pinyin.Add('huai')}
  76.             {$_ -ge 27426 -and $_ -le 24187}{$pinyin.Add('huan')}
  77.             {$_ -ge 33618 -and $_ -le 35854}{$pinyin.Add('huang')}
  78.             {$_ -ge 28784 -and $_ -le 32472}{$pinyin.Add('hui')}
  79.             {$_ -ge 33636 -and $_ -le 28151}{$pinyin.Add('hun')}
  80.             {$_ -ge 35905 -and $_ -le 31096}{$pinyin.Add('huo')}
  81.             {$_ -ge 20987 -and $_ -le 32426}{$pinyin.Add('ji')}
  82.             {$_ -ge 22025 -and $_ -le 23233}{$pinyin.Add('jia')}
  83.             {$_ -ge 27516 -and $_ -le 24314}{$pinyin.Add('jian')}
  84.             {$_ -ge 20725 -and $_ -le 38477}{$pinyin.Add('jiang')}
  85.             {$_ -ge 34121 -and $_ -le 31382}{$pinyin.Add('jiao')}
  86.             {$_ -ge 25581 -and $_ -le 23626}{$pinyin.Add('jie')}
  87.             {$_ -ge 24062 -and $_ -le 21170}{$pinyin.Add('jin')}
  88.             {$_ -ge 33606 -and $_ -le 20928}{$pinyin.Add('jing')}
  89.             {$_ -ge 28847 -and $_ -le 31384}{$pinyin.Add('jiong')}
  90.             {$_ -ge 25578 -and $_ -le 30106}{$pinyin.Add('jiu')}
  91.             {$_ -ge 38816 -and $_ -le 21095}{$pinyin.Add('ju')}
  92.             {$_ -ge 25424 -and $_ -le 32482}{$pinyin.Add('juan')}
  93.             {$_ -ge 25733 -and $_ -le 32477}{$pinyin.Add('jue')}
  94.             {$_ -ge 22343 -and $_ -le 39567}{$pinyin.Add('jun')}
  95.             {$_ -ge 21888 -and $_ -le 21679}{$pinyin.Add('ka')}
  96.             {$_ -ge 24320 -and $_ -le 24936}{$pinyin.Add('kai')}
  97.             {$_ -ge 21002 -and $_ -le 30475}{$pinyin.Add('kan')}
  98.             {$_ -ge 24247 -and $_ -le 28821}{$pinyin.Add('kang')}
  99.             {$_ -ge 32771 -and $_ -le 38752}{$pinyin.Add('kao')}
  100.             {$_ -ge 22391 -and $_ -le 35838}{$pinyin.Add('ke')}
  101.             {$_ -ge 32943 -and $_ -le 24691}{$pinyin.Add('ken')}
  102.             {$_ -ge 22353 -and $_ -le 21549}{$pinyin.Add('keng')}
  103.             {$_ -ge 31354 -and $_ -le 25511}{$pinyin.Add('kong')}
  104.             {$_ -ge 25248 -and $_ -le 23495}{$pinyin.Add('kou')}
  105.             {$_ -ge 26543 -and $_ -le 35044}{$pinyin.Add('ku')}
  106.             {$_ -ge 22840 -and $_ -le 33007}{$pinyin.Add('kua')}
  107.             {$_ -ge 22359 -and $_ -le 24555}{$pinyin.Add('kuai')}
  108.             {$_ -ge 23485 -and $_ -le 27454}{$pinyin.Add('kuan')}
  109.             {$_ -ge 21281 -and $_ -le 20917}{$pinyin.Add('kuang')}
  110.             {$_ -ge 20111 -and $_ -le 28291}{$pinyin.Add('kui')}
  111.             {$_ -ge 22372 -and $_ -le 22256}{$pinyin.Add('kun')}
  112.             {$_ -ge 25324 -and $_ -le 38420}{$pinyin.Add('kuo')}
  113.             {$_ -ge 22403 -and $_ -le 21862}{$pinyin.Add('la')}
  114.             {$_ -ge 33713 -and $_ -le 36182}{$pinyin.Add('lai')}
  115.             {$_ -ge 34013 -and $_ -le 28389}{$pinyin.Add('lan')}
  116.             {$_ -ge 29701 -and $_ -le 28010}{$pinyin.Add('lang')}
复制代码
后半段
作者: bylove    时间: 2023-9-10 23:04

  1.             {$_ -ge 25438 -and $_ -le 28061}{$pinyin.Add('lao')}
  2.             {$_ -ge 21202 -and $_ -le 20048}{$pinyin.Add('le')}
  3.             {$_ -ge 38647 -and $_ -le 27882}{$pinyin.Add('lei')}
  4.             {$_ -ge 26865 -and $_ -le 20919}{$pinyin.Add('leng')}
  5.             {$_ -ge 21400 -and $_ -le 21737}{$pinyin.Add('li')}
  6.             {$_ -ge 20457 -and $_ -le 20457}{$pinyin.Add('lia')}
  7.             {$_ -ge 32852 -and $_ -le 32451}{$pinyin.Add('lian')}
  8.             {$_ -ge 31918 -and $_ -le 35845}{$pinyin.Add('liang')}
  9.             {$_ -ge 25769 -and $_ -le 26009}{$pinyin.Add('liao')}
  10.             {$_ -ge 21015 -and $_ -le 29454}{$pinyin.Add('lie')}
  11.             {$_ -ge 29747 -and $_ -le 25294}{$pinyin.Add('lin')}
  12.             {$_ -ge 29618 -and $_ -le 20196}{$pinyin.Add('ling')}
  13.             {$_ -ge 28316 -and $_ -le 20845}{$pinyin.Add('liu')}
  14.             {$_ -ge 40857 -and $_ -le 38471}{$pinyin.Add('long')}
  15.             {$_ -ge 27004 -and $_ -le 38475}{$pinyin.Add('lou')}
  16.             {$_ -ge 33446 -and $_ -le 25134}{$pinyin.Add('lu')}
  17.             {$_ -ge 39540 -and $_ -le 32511}{$pinyin.Add('lv')}
  18.             {$_ -ge 23782 -and $_ -le 20081}{$pinyin.Add('luan')}
  19.             {$_ -ge 25504 -and $_ -le 30053}{$pinyin.Add('lue')}
  20.             {$_ -ge 25249 -and $_ -le 35770}{$pinyin.Add('lun')}
  21.             {$_ -ge 33821 -and $_ -le 32476}{$pinyin.Add('luo')}
  22.             {$_ -ge 22920 -and $_ -le 21527}{$pinyin.Add('ma')}
  23.             {$_ -ge 22475 -and $_ -le 33033}{$pinyin.Add('mai')}
  24.             {$_ -ge 30610 -and $_ -le 35881}{$pinyin.Add('man')}
  25.             {$_ -ge 33426 -and $_ -le 33725}{$pinyin.Add('mang')}
  26.             {$_ -ge 29483 -and $_ -le 36152}{$pinyin.Add('mao')}
  27.             {$_ -ge 20040 -and $_ -le 20040}{$pinyin.Add('me')}
  28.             {$_ -ge 29611 -and $_ -le 23194}{$pinyin.Add('mei')}
  29.             {$_ -ge 38376 -and $_ -le 20204}{$pinyin.Add('men')}
  30.             {$_ -ge 33804 -and $_ -le 23391}{$pinyin.Add('meng')}
  31.             {$_ -ge 30511 -and $_ -le 24130}{$pinyin.Add('mi')}
  32.             {$_ -ge 26825 -and $_ -le 38754}{$pinyin.Add('mian')}
  33.             {$_ -ge 33495 -and $_ -le 22937}{$pinyin.Add('miao')}
  34.             {$_ -ge 34065 -and $_ -le 28781}{$pinyin.Add('mie')}
  35.             {$_ -ge 27665 -and $_ -le 38397}{$pinyin.Add('min')}
  36.             {$_ -ge 26126 -and $_ -le 21629}{$pinyin.Add('ming')}
  37.             {$_ -ge 35884 -and $_ -le 35884}{$pinyin.Add('miu')}
  38.             {$_ -ge 25720 -and $_ -le 38476}{$pinyin.Add('mo')}
  39.             {$_ -ge 35851 -and $_ -le 26576}{$pinyin.Add('mou')}
  40.             {$_ -ge 25287 -and $_ -le 31302}{$pinyin.Add('mu')}
  41.             {$_ -ge 25343 -and $_ -le 32435}{$pinyin.Add('na')}
  42.             {$_ -ge 27670 -and $_ -le 22856}{$pinyin.Add('nai')}
  43.             {$_ -ge 21335 -and $_ -le 38590}{$pinyin.Add('nan')}
  44.             {$_ -ge 22218 -and $_ -le 22218}{$pinyin.Add('nang')}
  45.             {$_ -ge 25376 -and $_ -le 28118}{$pinyin.Add('nao')}
  46.             {$_ -ge 21602 -and $_ -le 21602}{$pinyin.Add('ne')}
  47.             {$_ -ge 39297 -and $_ -le 20869}{$pinyin.Add('nei')}
  48.             {$_ -ge 23273 -and $_ -le 23273}{$pinyin.Add('nen')}
  49.             {$_ -ge 33021 -and $_ -le 33021}{$pinyin.Add('neng')}
  50.             {$_ -ge 22958 -and $_ -le 28346}{$pinyin.Add('ni')}
  51.             {$_ -ge 34091 -and $_ -le 24565}{$pinyin.Add('nian')}
  52.             {$_ -ge 23064 -and $_ -le 37247}{$pinyin.Add('niang')}
  53.             {$_ -ge 40479 -and $_ -le 23615}{$pinyin.Add('niao')}
  54.             {$_ -ge 25423 -and $_ -le 28037}{$pinyin.Add('nie')}
  55.             {$_ -ge 24744 -and $_ -le 24744}{$pinyin.Add('nin')}
  56.             {$_ -ge 26592 -and $_ -le 27870}{$pinyin.Add('ning')}
  57.             {$_ -ge 29275 -and $_ -le 32445}{$pinyin.Add('niu')}
  58.             {$_ -ge 33043 -and $_ -le 24324}{$pinyin.Add('nong')}
  59.             {$_ -ge 22900 -and $_ -le 24594}{$pinyin.Add('nu')}
  60.             {$_ -ge 22899 -and $_ -le 22899}{$pinyin.Add('nv')}
  61.             {$_ -ge 26262 -and $_ -le 26262}{$pinyin.Add('nuan')}
  62.             {$_ -ge 34384 -and $_ -le 30111}{$pinyin.Add('nue')}
  63.             {$_ -ge 25386 -and $_ -le 35834}{$pinyin.Add('nuo')}
  64.             {$_ -ge 21734 -and $_ -le 21734}{$pinyin.Add('o')}
  65.             {$_ -ge 27431 -and $_ -le 27812}{$pinyin.Add('ou')}
  66.             {$_ -ge 21866 -and $_ -le 29750}{$pinyin.Add('pa')}
  67.             {$_ -ge 25293 -and $_ -le 27966}{$pinyin.Add('pai')}
  68.             {$_ -ge 25856 -and $_ -le 21467}{$pinyin.Add('pan')}
  69.             {$_ -ge 20051 -and $_ -le 32982}{$pinyin.Add('pang')}
  70.             {$_ -ge 25243 -and $_ -le 27873}{$pinyin.Add('pao')}
  71.             {$_ -ge 21624 -and $_ -le 27803}{$pinyin.Add('pei')}
  72.             {$_ -ge 21943 -and $_ -le 30406}{$pinyin.Add('pen')}
  73.             {$_ -ge 30768 -and $_ -le 30896}{$pinyin.Add('peng')}
  74.             {$_ -ge 22383 -and $_ -le 35692}{$pinyin.Add('pi')}
  75.             {$_ -ge 31687 -and $_ -le 39575}{$pinyin.Add('pian')}
  76.             {$_ -ge 39128 -and $_ -le 31080}{$pinyin.Add('piao')}
  77.             {$_ -ge 25735 -and $_ -le 30629}{$pinyin.Add('pie')}
  78.             {$_ -ge 25340 -and $_ -le 32856}{$pinyin.Add('pin')}
  79.             {$_ -ge 20050 -and $_ -le 23631}{$pinyin.Add('ping')}
  80.             {$_ -ge 22369 -and $_ -le 21078}{$pinyin.Add('po')}
  81.             {$_ -ge 25169 -and $_ -le 28689}{$pinyin.Add('pu')}
  82.             {$_ -ge 26399 -and $_ -le 35755}{$pinyin.Add('qi')}
  83.             {$_ -ge 25488 -and $_ -le 27965}{$pinyin.Add('qia')}
  84.             {$_ -ge 29301 -and $_ -le 27465}{$pinyin.Add('qian')}
  85.             {$_ -ge 26538 -and $_ -le 25250}{$pinyin.Add('qiang')}
  86.             {$_ -ge 27207 -and $_ -le 31373}{$pinyin.Add('qiao')}
  87.             {$_ -ge 20999 -and $_ -le 31363}{$pinyin.Add('qie')}
  88.             {$_ -ge 38054 -and $_ -le 27777}{$pinyin.Add('qin')}
  89.             {$_ -ge 38738 -and $_ -le 24198}{$pinyin.Add('qing')}
  90.             {$_ -ge 29756 -and $_ -le 31351}{$pinyin.Add('qiong')}
  91.             {$_ -ge 31179 -and $_ -le 27845}{$pinyin.Add('qiu')}
  92.             {$_ -ge 36235 -and $_ -le 21435}{$pinyin.Add('qu')}
  93.             {$_ -ge 22280 -and $_ -le 21149}{$pinyin.Add('quan')}
  94.             {$_ -ge 32570 -and $_ -le 38592}{$pinyin.Add('que')}
  95.             {$_ -ge 35033 -and $_ -le 32676}{$pinyin.Add('qun')}
  96.             {$_ -ge 28982 -and $_ -le 26579}{$pinyin.Add('ran')}
  97.             {$_ -ge 29924 -and $_ -le 35753}{$pinyin.Add('rang')}
  98.             {$_ -ge 39286 -and $_ -le 32469}{$pinyin.Add('rao')}
  99.             {$_ -ge 24825 -and $_ -le 28909}{$pinyin.Add('re')}
  100.             {$_ -ge 22764 -and $_ -le 32427}{$pinyin.Add('ren')}
  101.             {$_ -ge 25172 -and $_ -le 20173}{$pinyin.Add('reng')}
  102.             {$_ -ge 26085 -and $_ -le 26085}{$pinyin.Add('ri')}
  103.             {$_ -ge 25102 -and $_ -le 20887}{$pinyin.Add('rong')}
  104.             {$_ -ge 25545 -and $_ -le 32905}{$pinyin.Add('rou')}
  105.             {$_ -ge 33593 -and $_ -le 35109}{$pinyin.Add('ru')}
  106.             {$_ -ge 36719 -and $_ -le 38446}{$pinyin.Add('ruan')}
  107.             {$_ -ge 34122 -and $_ -le 38160}{$pinyin.Add('rui')}
  108.             {$_ -ge 38384 -and $_ -le 28070}{$pinyin.Add('run')}
  109.             {$_ -ge 33509 -and $_ -le 24369}{$pinyin.Add('ruo')}
复制代码

作者: bylove    时间: 2023-9-10 23:04

  1.             {$_ -ge 25746 -and $_ -le 33832}{$pinyin.Add('sa')}
  2.             {$_ -ge 33134 -and $_ -le 36187}{$pinyin.Add('sai')}
  3.             {$_ -ge 19977 -and $_ -le 25955}{$pinyin.Add('san')}
  4.             {$_ -ge 26705 -and $_ -le 20007}{$pinyin.Add('sang')}
  5.             {$_ -ge 25620 -and $_ -le 23234}{$pinyin.Add('sao')}
  6.             {$_ -ge 29791 -and $_ -le 28073}{$pinyin.Add('se')}
  7.             {$_ -ge 26862 -and $_ -le 26862}{$pinyin.Add('sen')}
  8.             {$_ -ge 20711 -and $_ -le 20711}{$pinyin.Add('seng')}
  9.             {$_ -ge 33678 -and $_ -le 29022}{$pinyin.Add('sha')}
  10.             {$_ -ge 31579 -and $_ -le 26194}{$pinyin.Add('shai')}
  11.             {$_ -ge 29642 -and $_ -le 32558}{$pinyin.Add('shan')}
  12.             {$_ -ge 22674 -and $_ -le 35059}{$pinyin.Add('shang')}
  13.             {$_ -ge 26786 -and $_ -le 32461}{$pinyin.Add('shao')}
  14.             {$_ -ge 22882 -and $_ -le 35774}{$pinyin.Add('she')}
  15.             {$_ -ge 30775 -and $_ -le 28183}{$pinyin.Add('shen')}
  16.             {$_ -ge 22768 -and $_ -le 22307}{$pinyin.Add('sheng')}
  17.             {$_ -ge 24072 -and $_ -le 35797}{$pinyin.Add('shi')}
  18.             {$_ -ge 25910 -and $_ -le 20861}{$pinyin.Add('shou')}
  19.             {$_ -ge 34092 -and $_ -le 24661}{$pinyin.Add('shu')}
  20.             {$_ -ge 21047 -and $_ -le 32781}{$pinyin.Add('shua')}
  21.             {$_ -ge 25684 -and $_ -le 24069}{$pinyin.Add('shuai')}
  22.             {$_ -ge 26643 -and $_ -le 25332}{$pinyin.Add('shuan')}
  23.             {$_ -ge 38684 -and $_ -le 29245}{$pinyin.Add('shuang')}
  24.             {$_ -ge 35841 -and $_ -le 31246}{$pinyin.Add('shui')}
  25.             {$_ -ge 21550 -and $_ -le 33308}{$pinyin.Add('shun')}
  26.             {$_ -ge 35828 -and $_ -le 28865}{$pinyin.Add('shuo')}
  27.             {$_ -ge 26031 -and $_ -le 24051}{$pinyin.Add('si')}
  28.             {$_ -ge 26494 -and $_ -le 35829}{$pinyin.Add('song')}
  29.             {$_ -ge 25628 -and $_ -le 25822}{$pinyin.Add('sou')}
  30.             {$_ -ge 22013 -and $_ -le 32899}{$pinyin.Add('su')}
  31.             {$_ -ge 37240 -and $_ -le 31639}{$pinyin.Add('suan')}
  32.             {$_ -ge 34429 -and $_ -le 31071}{$pinyin.Add('sui')}
  33.             {$_ -ge 23385 -and $_ -le 31499}{$pinyin.Add('sun')}
  34.             {$_ -ge 34001 -and $_ -le 25152}{$pinyin.Add('suo')}
  35.             {$_ -ge 22604 -and $_ -le 36367}{$pinyin.Add('ta')}
  36.             {$_ -ge 32974 -and $_ -le 27760}{$pinyin.Add('tai')}
  37.             {$_ -ge 22349 -and $_ -le 28845}{$pinyin.Add('tan')}
  38.             {$_ -ge 27748 -and $_ -le 28907}{$pinyin.Add('tang')}
  39.             {$_ -ge 25487 -and $_ -le 22871}{$pinyin.Add('tao')}
  40.             {$_ -ge 29305 -and $_ -le 29305}{$pinyin.Add('te')}
  41.             {$_ -ge 34276 -and $_ -le 35466}{$pinyin.Add('teng')}
  42.             {$_ -ge 26799 -and $_ -le 23625}{$pinyin.Add('ti')}
  43.             {$_ -ge 22825 -and $_ -le 33094}{$pinyin.Add('tian')}
  44.             {$_ -ge 25361 -and $_ -le 36339}{$pinyin.Add('tiao')}
  45.             {$_ -ge 36148 -and $_ -le 24086}{$pinyin.Add('tie')}
  46.             {$_ -ge 21381 -and $_ -le 33351}{$pinyin.Add('ting')}
  47.             {$_ -ge 36890 -and $_ -le 30171}{$pinyin.Add('tong')}
  48.             {$_ -ge 20599 -and $_ -le 36879}{$pinyin.Add('tou')}
  49.             {$_ -ge 20984 -and $_ -le 20820}{$pinyin.Add('tu')}
  50.             {$_ -ge 28237 -and $_ -le 22242}{$pinyin.Add('tuan')}
  51.             {$_ -ge 25512 -and $_ -le 36864}{$pinyin.Add('tui')}
  52.             {$_ -ge 21534 -and $_ -le 33216}{$pinyin.Add('tun')}
  53.             {$_ -ge 25302 -and $_ -le 21822}{$pinyin.Add('tuo')}
  54.             {$_ -ge 25366 -and $_ -le 34972}{$pinyin.Add('wa')}
  55.             {$_ -ge 27498 -and $_ -le 22806}{$pinyin.Add('wai')}
  56.             {$_ -ge 35916 -and $_ -le 33109}{$pinyin.Add('wan')}
  57.             {$_ -ge 27754 -and $_ -le 22916}{$pinyin.Add('wang')}
  58.             {$_ -ge 23041 -and $_ -le 21355}{$pinyin.Add('wei')}
  59.             {$_ -ge 30239 -and $_ -le 38382}{$pinyin.Add('wen')}
  60.             {$_ -ge 21985 -and $_ -le 29934}{$pinyin.Add('weng')}
  61.             {$_ -ge 25373 -and $_ -le 27779}{$pinyin.Add('wo')}
  62.             {$_ -ge 24043 -and $_ -le 35823}{$pinyin.Add('wu')}
  63.             {$_ -ge 26132 -and $_ -le 32454}{$pinyin.Add('xi')}
  64.             {$_ -ge 30606 -and $_ -le 21523}{$pinyin.Add('xia')}
  65.             {$_ -ge 25472 -and $_ -le 32447}{$pinyin.Add('xian')}
  66.             {$_ -ge 30456 -and $_ -le 35937}{$pinyin.Add('xiang')}
  67.             {$_ -ge 33831 -and $_ -le 25928}{$pinyin.Add('xiao')}
  68.             {$_ -ge 26964 -and $_ -le 23633}{$pinyin.Add('xie')}
  69.             {$_ -ge 34218 -and $_ -le 34885}{$pinyin.Add('xin')}
  70.             {$_ -ge 26143 -and $_ -le 22995}{$pinyin.Add('xing')}
  71.             {$_ -ge 20804 -and $_ -le 29066}{$pinyin.Add('xiong')}
  72.             {$_ -ge 20241 -and $_ -le 32483}{$pinyin.Add('xiu')}
  73.             {$_ -ge 22687 -and $_ -le 32493}{$pinyin.Add('xu')}
  74.             {$_ -ge 36713 -and $_ -le 32474}{$pinyin.Add('xuan')}
  75.             {$_ -ge 38772 -and $_ -le 34880}{$pinyin.Add('xue')}
  76.             {$_ -ge 21195 -and $_ -le 36805}{$pinyin.Add('xun')}
  77.             {$_ -ge 21387 -and $_ -le 35766}{$pinyin.Add('ya')}
  78.             {$_ -ge 28937 -and $_ -le 39564}{$pinyin.Add('yan')}
  79.             {$_ -ge 27523 -and $_ -le 28478}{$pinyin.Add('yang')}
  80.             {$_ -ge 36992 -and $_ -le 32768}{$pinyin.Add('yao')}
  81.             {$_ -ge 26928 -and $_ -le 28082}{$pinyin.Add('ye')}
  82.             {$_ -ge 19968 -and $_ -le 32462}{$pinyin.Add('yi')}
  83.             {$_ -ge 33589 -and $_ -le 21360}{$pinyin.Add('yin')}
  84.             {$_ -ge 33521 -and $_ -le 26144}{$pinyin.Add('ying')}
  85.             {$_ -ge 21727 -and $_ -le 21727}{$pinyin.Add('yo')}
  86.             {$_ -ge 25317 -and $_ -le 29992}{$pinyin.Add('yong')}
  87.             {$_ -ge 24189 -and $_ -le 36802}{$pinyin.Add('you')}
  88.             {$_ -ge 28132 -and $_ -le 39533}{$pinyin.Add('yu')}
  89.             {$_ -ge 40499 -and $_ -le 38498}{$pinyin.Add('yuan')}
  90.             {$_ -ge 26352 -and $_ -le 38405}{$pinyin.Add('yue')}
  91.             {$_ -ge 32792 -and $_ -le 23381}{$pinyin.Add('yun')}
  92.             {$_ -ge 21277 -and $_ -le 26434}{$pinyin.Add('za')}
  93.             {$_ -ge 26685 -and $_ -le 22312}{$pinyin.Add('zai')}
  94.             {$_ -ge 21681 -and $_ -le 36190}{$pinyin.Add('zan')}
  95.             {$_ -ge 36163 -and $_ -le 33900}{$pinyin.Add('zang')}
  96.             {$_ -ge 36973 -and $_ -le 29157}{$pinyin.Add('zao')}
  97.             {$_ -ge 36131 -and $_ -le 27901}{$pinyin.Add('ze')}
  98.             {$_ -ge 36156 -and $_ -le 36156}{$pinyin.Add('zei')}
  99.             {$_ -ge 24590 -and $_ -le 24590}{$pinyin.Add('zen')}
  100.             {$_ -ge 22686 -and $_ -le 36192}{$pinyin.Add('zeng')}
  101.             {$_ -ge 25166 -and $_ -le 35784}{$pinyin.Add('zha')}
  102.             {$_ -ge 25688 -and $_ -le 23528}{$pinyin.Add('zhai')}
  103.             {$_ -ge 30651 -and $_ -le 32509}{$pinyin.Add('zhan')}
  104.             {$_ -ge 27167 -and $_ -le 38556}{$pinyin.Add('zhang')}
  105.             {$_ -ge 25307 -and $_ -le 21484}{$pinyin.Add('zhao')}
  106.             {$_ -ge 36974 -and $_ -le 27993}{$pinyin.Add('zhe')}
  107.             {$_ -ge 29645 -and $_ -le 38453}{$pinyin.Add('zhen')}
  108.             {$_ -ge 33976 -and $_ -le 35777}{$pinyin.Add('zheng')}
  109.             {$_ -ge 33437 -and $_ -le 31378}{$pinyin.Add('zhi')}
  110.             {$_ -ge 20013 -and $_ -le 20247}{$pinyin.Add('zhong')}
  111.             {$_ -ge 33311 -and $_ -le 39588}{$pinyin.Add('zhou')}
  112.             {$_ -ge 29664 -and $_ -le 39547}{$pinyin.Add('zhu')}
  113.             {$_ -ge 25235 -and $_ -le 29226}{$pinyin.Add('zhua')}
  114.             {$_ -ge 25341 -and $_ -le 25341}{$pinyin.Add('zhuai')}
  115.             {$_ -ge 19987 -and $_ -le 31686}{$pinyin.Add('zhuan')}
  116.             {$_ -ge 26729 -and $_ -le 29366}{$pinyin.Add('zhuang')}
  117.             {$_ -ge 26894 -and $_ -le 32512}{$pinyin.Add('zhui')}
  118.             {$_ -ge 35846 -and $_ -le 20934}{$pinyin.Add('zhun')}
  119.             {$_ -ge 25417 -and $_ -le 27978}{$pinyin.Add('zhuo')}
  120.             {$_ -ge 20857 -and $_ -le 23383}{$pinyin.Add('zi')}
  121.             {$_ -ge 39683 -and $_ -le 32437}{$pinyin.Add('zong')}
  122.             {$_ -ge 37049 -and $_ -le 25549}{$pinyin.Add('zou')}
  123.             {$_ -ge 31199 -and $_ -le 32452}{$pinyin.Add('zu')}
  124.             {$_ -ge 38075 -and $_ -le 32386}{$pinyin.Add('zuan')}
  125.             {$_ -ge 22068 -and $_ -le 32618}{$pinyin.Add('zui')}
  126.             {$_ -ge 23562 -and $_ -le 36981}{$pinyin.Add('zun')}
  127.             {$_ -ge 26152 -and $_ -le 26152}{$pinyin.Add('zuo')}
  128.         }
  129.     }
  130.     end{
  131.         $pinyin -join ' '
  132.     }
  133. }
  134. ConvertTo-Pinyin 你好
复制代码

作者: bylove    时间: 2023-9-10 23:04

回复 2# Five66


    代码太长了,字数限制了,麻烦看看谢谢
作者: Five66    时间: 2023-9-10 23:33

本帖最后由 Five66 于 2023-9-11 00:12 编辑

回复 8# bylove


    眼抖看错了,已编辑
作者: bylove    时间: 2023-9-11 00:17

回复 9# Five66


    减65536是对的,我测试过了,能够返回正确的"你好" 去掉-65535返回错了...

现在的问题不是去不去掉-65535的问题,是上面几楼的代码是汉字转拼音,源代码是从vba转的
帖子在这
https://www.cnblogs.com/cddaishi/p/9744710.html

如果转换为负数进行测试,能够正确的返回你好变ni hao

但如何换算成PowerShell这边的正数编码呢?因为PowerShell转换他vba那个帖子里的数值我感觉多了一道工序

简单来说就是我把那篇文章翻译成PowerShell能用的代码,不过里面的编码判定区域都是负数值
  1.             {$_ -ge -20319 -and $_ -le -20318}{$pinyin.Add('a')}
  2.             {$_ -ge -20317 -and $_ -le -20305}{$pinyin.Add('ai')}
  3.             {$_ -ge -20304 -and $_ -le -20296}{$pinyin.Add('an')}
复制代码
原文汉字是负数.

经过我再三修改后希望可以直接改成PowerShell [int][char]转换后的区间就好了.避免再多一道程序去转换为负值了
作者: bylove    时间: 2023-9-11 00:20

  1.     begin{
  2.         [System.Collections.Generic.List[string]]$pinyin=@{}
  3.         function Asc{
  4.             param([string]$Chars)
  5.             $Chars.ToCharArray()|%{
  6.                 $ecode=[System.Text.Encoding]::GetEncoding('GB2312')
  7.                 [byte[]]$bytes=$ecode.GetBytes($_)
  8.                 if($ecode.GetByteCount($_) -eq 2){$bytes[0]*256+$bytes[1]-65536}else{$bytes[0]}
  9.             }
  10.         }
  11.     }
  12.     process{        
  13.         switch(asc $InputObject)
复制代码
在上面这里加上这个函数后,能够正确返回对应的"ni hao",不过这样多了一道工序,我希望可以直接把条件修改为正数就好了,前面几楼的代码是我已经通过1L的代码转换后的结果,函数最终返回值有点问题
作者: bylove    时间: 2023-9-11 00:21

论坛是不能上传文件吗
作者: Five66    时间: 2023-9-11 01:51

1楼代码第14行有两个条件,分别对应减65536和不减65536
既然你只有减65536才正确,可以将Asc函数返回的负数值+65536变为正数
不过4楼代码那正数值条件是unicode值,powershell字符串默认unicode,啥都不要改,照抄就行




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2