幫幫忙啊 大俠們!在線等待啊
uj5u.com熱心網友回復:
如果是VB就很簡單dim s as string
dim B() as byte
s=.......
b=s
這樣,b陣列中,每相鄰兩個位元組的值,就是對應s字符的Unicode媽
uj5u.com熱心網友回復:
不是啦,例如‘一’,unicode碼是4E00,我想得到的這個uj5u.com熱心網友回復:
你有沒有試?試都不試!
Private Sub Command3_Click()
Dim s As String
Dim B() As Byte
s = "一個人"
B = s
Dim i As Long
For i = 0 To UBound(B)
Debug.Print Hex(B(i))
Next
End Sub
結果是:
0
4E
2A
4E
BA
4E
uj5u.com熱心網友回復:
B能等于s嗎 型別不一樣。uj5u.com熱心網友回復:
兄弟 加QQ聊比較方便吧!我的是2469431738 redskyuj5u.com熱心網友回復:
我狂暈,能不能你去試一下不就知道了,都給你了歷程,給你結果,還這么問!!
uj5u.com熱心網友回復:
哎 兄弟我已經試了!
我也截圖上去了 我用的是vb.net 你說的是。。。。。?
uj5u.com熱心網友回復:
暈,我是VB6.net的字串應該有 .tobyte 之類的轉換函式,
uj5u.com熱心網友回復:
我還有幾個問題想問大俠您,能加QQ詳聊嗎?2469431738,感謝萬分啊!uj5u.com熱心網友回復:
有問題就把問題放出來,在這邊討論uj5u.com熱心網友回復:
?hex(ascw("一"))4E00
uj5u.com熱心網友回復:
參考: http://blog.csdn.net/chenjl1031/article/details/6059767Option Explicit
Private Declare Function MultiByteToWideChar Lib "kernel32.dll" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpMultiByteStr As String, ByVal cchMultiByte As Long, ByVal lpWideCharStr As String, ByVal cchWideChar As Long) As Long
Private Declare Function WideCharToMultiByte Lib "kernel32.dll" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long, ByRef lpMultiByteStr As Any, ByVal cchMultiByte As Long, ByVal lpDefaultChar As String, ByVal lpUsedDefaultChar As Long) As Long
Private Const CP_ACP As Long = 0
Private Const CP_UTF8 As Long = 65001
'Ansi純文本檔案轉換為Unicode(Little Endian)文本檔案
Private Function AnsiToULE(ByVal Inputansifile As String, ByVal OutputULEfile As String) As Boolean
Dim Filebyte() As Byte, sAnsi As String, retLen As Long, FileNumber As Long
Dim sUnicodeBuffer As String
On Error Resume Next
'打開Ansi純文本檔案Inputansifile
FileNumber = FreeFile
If Dir(Inputansifile) = "" Then AnsiToULE = False: Exit Function
Open Inputansifile For Binary As #FileNumber
ReDim Filebyte(LOF(FileNumber) - 1)
Get #FileNumber, , Filebyte
Close #FileNumber
sAnsi = StrConv(Filebyte, vbUnicode) '轉換為VB6可顯示的字串
retLen = MultiByteToWideChar(CP_ACP, 0, sAnsi, LenB(sAnsi), vbNullChar, 0) '取得轉換后需要的空間大小retLen
sUnicodeBuffer = String$(LenB(sAnsi), vbNullChar) '設定緩沖區大小
If retLen > 0 Then
retLen = MultiByteToWideChar(CP_ACP, 0, sAnsi, LenB(sAnsi), sUnicodeBuffer, retLen) '開始轉換
Else
AnsiToULE = False: Exit Function
End If
'保存為Unicode(Little Endian)文本檔案OutputULEfile
If retLen > 0 Then
FileNumber = FreeFile
If Dir(OutputULEfile) <> "" Then Kill (OutputULEfile)
Open OutputULEfile For Binary As #FileNumber
Put #FileNumber, , &HFEFF '加上Unicode(Little Endian)檔案頭BOM標志FFFE
Put #FileNumber, , sUnicodeBuffer '保存檔案內容
Close #FileNumber
AnsiToULE = True
Else
AnsiToULE = False: Exit Function
End If
End Function
'Ansi純文本檔案轉換為Unicode Big Endian文本檔案
Private Function AnsiToUBE(ByVal Inputansifile As String, ByVal OutputUBEfile As String) As Boolean
Dim Filebyte() As Byte, Fbyte() As Byte
Dim sAnsi As String, retLen As Long, FileNumber As Long
Dim sUnicodeBuffer As String
Dim i As Long
On Error Resume Next
'打開Ansi純文本檔案Inputansifile
FileNumber = FreeFile
If Dir(Inputansifile) = "" Then AnsiToUBE = False: Exit Function
Open Inputansifile For Binary As #FileNumber
ReDim Filebyte(LOF(FileNumber) - 1)
Get #FileNumber, , Filebyte
Close #FileNumber
sAnsi = StrConv(Filebyte, vbUnicode) '轉換為VB6可顯示的字串
retLen = MultiByteToWideChar(CP_ACP, 0, sAnsi, LenB(sAnsi), vbNullChar, 0) '取得轉換后需要的空間大小retLen
sUnicodeBuffer = String$(LenB(sAnsi), vbNullChar) '設定緩沖區大小
If retLen > 0 Then
retLen = MultiByteToWideChar(CP_ACP, 0, sAnsi, LenB(sAnsi), sUnicodeBuffer, retLen) '開始轉換
Else
AnsiToUBE = False: Exit Function
End If
'保存為Unicode Big Endian文本檔案OutputUBEfile
If retLen > 0 Then
ReDim Filebyte(LenB(sAnsi) - 1), Fbyte(LenB(sAnsi) - 1)
Filebyte = StrConv(sUnicodeBuffer, vbFromUnicode)
For i = 0 To UBound(Filebyte)
If i Mod 2 = 0 Then
Fbyte(i) = Filebyte(i + 1)
Else
Fbyte(i) = Filebyte(i - 1)
End If
Next
FileNumber = FreeFile
If Dir(OutputUBEfile) <> "" Then Kill (OutputUBEfile)
Open OutputUBEfile For Binary As #FileNumber
Put #FileNumber, , &HFFFE '加上Unicode(Big Endian)檔案頭BOM標志FEFF
Put #FileNumber, , Fbyte ' sUnicodeBuffer '保存檔案內容
Close #FileNumber
AnsiToUBE = True
Else
AnsiToUBE = False: Exit Function
End If
End Function
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/155930.html
標籤:網絡編程
上一篇:小程式除錯錯誤,新人求幫忙
下一篇:求幫忙
