2016-10-31 25 views
1

我试图使用API​​的消息。对于我的具体应用,我需要得到所有字符的UCS-2的值之前,我可以使用API​​。 请告诉怎么去USC-2的值对于给定的字符串的所有字符。对于我的申请,我会打字我的电子表格的单元串并希望看到在另一单元的字符串USC-2的值作为I型。获取的Unicode(UCS-2)值在Excel或字符串OfficeCalc

示例:如果I型 “नमस्ते” 在一个小区中我应该得到的输出为 “0928 092E 0938 094D 0924 0947” 中的另一小区。

在Excel和OfficeCalc有一个函数“UNICODE”,它有类似的功能,但它仅适用于字符串的第一个字符。我想将整个字符串转换为4位数的Unicode值。

API Link - 第6页 - 第6.2节

+0

不可能仅使用表单公式。宏编程语言是必需的。什么编程语言可以用于你?还有为什么Excel标签?使用VBA的Excel也是一个选项吗? –

+0

想要在Excel中完成,因为已经将它用于上述应用程序。还希望从输入字符串中绘制动态数据,例如字符数和它将消耗的实际SMS数量。此外,它将能够存储我的收件人列表。在Excel中获取所有数据后,我打算使用perl来读取excel文件并调用API。 – bubble

+0

我不习惯VBA – bubble

回答

1

而不宏唯一的解决办法是使用辅助细胞。

enter image description here

公式:

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的计算值式的解决方案将是相同的用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 
1

我的答案是类似@Axel里希特:

  1. 在B1单元格中输入=IF(LEN($A$1)>=ROW(),DEC2HEX(UNICODE(MID($A$1,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个字符。

calc sheet formulas

请记住,在最新版本的LibreOffice(和Excel我认为),你可以按Alt键+X看到一个字符的Unicode值。

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