获取Excel或OfficeCalc中string的Unicode(USC-2)值

我正在尝试使用API​​进行消息传递。 对于我的特定应用程序,我需要在使用API​​之前获取所有字符的USC-2值。 请告诉如何获得给定string的所有字符的USC-2值。 对于我的应用程序,我将在电子表格的单元格中键入我的string,并希望在我input时看到另一个单元格中string的USC-2值。

例如:如果我在一个单元格中input“नमस्ते”,我应该在另一个单元格中输出“0928 092E 0938 094D 0924 0947”。

在Excel和OfficeCalc中有一个函数“UNICODE”,它做了类似的事情,但是它只适用于string的第一个字符。 我想将整个string转换成4位数的Unicode值。

API链接 – 第6页 – 第6.2节

没有macros的唯一解决scheme是使用帮助单元。

在这里输入图像说明

公式:

B1

 =MID($A1,COLUMN(A1),1) 

复制到右侧,直到结果为空。

B2

 =DEC2HEX(UNICODE(B1),4) 

复制到右侧,直到出现#VALUE错误。

B3

 =B2 

C3

 =B3&C2 

复制到右侧,直到出现#VALUE错误。

使用以下用户定义的函数(Excel VBA),可以使用这个来实现

 =ucscode(A1) 

在一个单元格内。

function:

 Public Function ucscode(s As String) As String For i = 1 To Len(s) ucscode = ucscode & Application.Dec2Hex(AscW(Mid(s, i, 1)), 4) Next End Function 

使用Openoffice Calc公式解决scheme将与Excel相同。 当然,错误是错误:504而不是#VALUE。

用户定义的starbasic函数可以是:

 Public Function ucscode(s As String) As String Dim sresult as String For i = 1 To Len(s) sresult = sresult & right("0000" & hex(asc(mid(s, i,1))), 4) Next ucscode = sresult End Function 

我的回答类似于@Axel Richter的:

  1. 在单元格B1中,input=IF(LEN($A$1)>=ROW(),DEC2HEX(UNICODE(MID($A$1,ROW(),1)),4),"")
  2. 填写这个公式到行B30。
  3. 在单元格C1中input公式=CONCATENATE(B1,B2,B3,B4,B5,B6,B7,B8,B9,B10,B11,B12,B13,B14,B15,B16,B17,B18,B19,B20,B21,B22,B23,B24,B25,B26,B27,B28,B29,B30)

现在input要在单元格A1中转换的string。 它最多可以工作30个字符。

计算表格公​​式

请记住,在最新版本的LibreOffice(和我认为的Excel)中,可以按Alt + x查看字符的Unicode值。

当然,这在Perl中会更容易一些。