2012-02-24 38 views
0

致力於將Visual Basic SHA-256加密例程轉換爲在LotusScript中工作。LotusScript中的VB ASCB?

除了VB的AscB命令以外,進展順利。

發現:「使用AscB函數返回包含字節數據的字符串的第一個字節。」

找不到在LotusScript中執行相同操作的方法。

請參閱LS CByte命令關閉:「CByte返回已轉換爲Byte的表達式。」

沒有辦法讓它返回表達式的第一個字節。

有什麼建議嗎?

Derek

+0

請問爲什麼你不使用加密字段? – leyrer 2012-02-25 23:00:35

+0

BTW:SHA-256不加密。它是一種單向加密散列函數。 – 2012-02-27 14:54:05

回答

2

ASCB僅適用於單字節字符編碼字符串。所有LotusScript字符串數據都是以UTF16雙字節編碼表示的Unicode。

LotusScript Uni()函數返回一個Long,其中包含Unicode字符的整數值。由於輸入是一個雙字節字符,尤尼()的返回值從0到65535。如果你想獲得每兩個字節的值範圍,這樣的代碼將這樣的伎倆:

Dim ws As New NotesUIWorkspace 
Dim s1 As String 
Dim u1 As Long 
Dim u2 As Long 
Dim lowbyte As Integer 
Dim highbyte As Integer 
Dim b1 As Byte 
Dim b2 as Byte 

s1 = "Ʃ"  

u1 = Uni(s1) 

lowbyte = u1 Mod 256 
highbyte = (u1 - lowbyte)/256 

b1 = Cbyte(lowbyte) 
b2 = Cbyte(highbyte) 

Call ws.Prompt(prompt_ok,"test",s1 + " " + Cstr(Cint(b1)) + " " + Cstr(Cint(b2))) 
+0

謝謝。這對我有意義。 – Derek 2012-02-25 23:33:18

0

會Asc,LeftB和RightB做你所需要的?

在我的測試...

Lenb("A") = 2 

Leftb("A", 1) = "A" 

Asc(Leftb("A", 1)) = 65 

Leftb("A", 2) = "A" 

Asc(Leftb("A", 2)) = 65 

Asc(Rightb(Leftb("A", 2), 1)) = 0