Overview
| Comment: | (/ω\) |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA3-256: |
99733128964bf059bb54e29c8e191160 |
| User & Date: | 顽雨沉风 on 2024-01-23 05:43:08.476 |
| Other Links: | manifest | tags |
Context
|
2024-01-23
| ||
| 05:46 | (/ω\) check-in: cfc70296e9 user: 顽雨沉风 tags: trunk | |
| 05:43 | (/ω\) check-in: 9973312896 user: 顽雨沉风 tags: trunk | |
| 05:42 | (/ω\) check-in: 97579aac1b user: 顽雨沉风 tags: trunk | |
Changes
Modified 残局文料/lib_lua/u8_to_a.lua
from [61e6f5799a]
to [8ed9e155fc].
1 |
local ffi = require("ffi")
| | | | | | | | | | | | | | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
local ffi = require("ffi")
local d_4 = {}
ffi.cdef([[
typedef unsigned int UINT;
typedef unsigned long DWORD;
typedef wchar_t WCHAR;
typedef WCHAR* LPWSTR;
typedef wchar_t* LPCWCH;
typedef char CHAR;
typedef CHAR* LPSTR;
typedef const char* LPCCH;
typedef int BOOL;
typedef BOOL* LPBOOL;
int MultiByteToWideChar(UINT CodePage, DWORD dwFlags, LPCCH lpMultiByteStr, int cbMultiByte, LPWSTR lpWideCharStr, int cchWideChar);
int WideCharToMultiByte(UINT CodePage, DWORD dwFlags, LPCWCH lpWideCharStr, int cchWideChar, LPSTR lpMultiByteStr, int cchMultiByte, LPCCH lpDefaultChar, LPBOOL pfUsedDefaultChar);
]])
d_4.CP_ACP = 0
d_4.CP_UTF8 = 65001
function d_4.m2w(input, o1)
local wlen = ffi.C.MultiByteToWideChar(o1 or d_4.CP_ACP, 0, input, #input, nil, 0)
local wstr = ffi.new("wchar_t[?]", wlen + 1)
ffi.C.MultiByteToWideChar(o1 or d_4.CP_ACP, 0, input, #input, wstr, wlen)
return wstr, wlen
end
function d_4.w2m(wstr, wlen, o1)
local len = ffi.C.WideCharToMultiByte(o1 or d_4.CP_ACP, 0, wstr, wlen or -1, nil, 0, nil, nil)
local str = ffi.new("char[?]", len)
ffi.C.WideCharToMultiByte(o1 or d_4.CP_ACP, 0, wstr, wlen or -1, str, len, nil, nil)
return ffi.string(str, len)
end
function d_4.u8_to_a(input)
return d_4.w2m(d_4.m2w(input, d_4.CP_UTF8))
end
function d_4.a_to_u8(input)
local k1, k2 = d_4.m2w(input)
return d_4.w2m(k1, k2, d_4.CP_UTF8)
end
return d_4
|