获取 Excel 或 OfficeCalc 中字符串的 Unicode (USC-2) 值

Get Unicode (USC-2) values for a string in Excel or OfficeCalc

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

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

在 excel 和 OfficeCalc 中有一个函数 "UNICODE" 做类似的事情,但它只适用于字符串的第一个字符。我想将整个字符串转换为 4 位 Unicode 值。

API Link - 第 6 页 - 第 6.2 节

没有宏的唯一解决方案是使用辅助细胞。

例子

公式:

B1中:

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

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

B2中:

=DEC2HEX(UNICODE(B1),4)

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

B3中:

=B2

并在 C3 中:

=B3&C2

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

使用以下用户定义函数 (Excel VBA),这可以使用

实现
=ucscode(A1)

在一个单元格内。

函数:

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 的公式解决方案与 Excel 相同。当然错误是 Err: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 中,输入 =IF(LEN($A)>=ROW(),DEC2HEX(UNICODE(MID($A,ROW(),1)),4),"")
  2. 将此公式填写到 B30 行。
  3. 在单元格 C1 中,输入公式 =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).

现在在单元格A1中输入要转换的字符串。它最多适用于 30 个字符。

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

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