KaFu Posted April 11, 2013 Posted April 11, 2013 (edited) Hiho Forum ,I'm looking for a way to reverse the byte order of a string (for UTF16-LE <> UTF16-BE transformation). I've found the function LCMapString which should imho do the trick, but can't get it to work correctly. Maybe one of the real pros want to take a look ...Edit:Sorry, much too complicated... this already does the trick >_< ...$in = "test22" ConsoleWrite(StringToBinary($in, 2) & @CRLF) ConsoleWrite(StringToBinary($in, 3) & @CRLF); LCMapString function ; http://msdn.microsoft.com/en-us/library/dd318700 $in = "test22" $t_in = DllStructCreate("wchar[" & StringLen($in) & "]") DllStructSetData($t_in, 1, $in) ConsoleWrite(StringToBinary(DllStructGetData($t_in, 1)) & @CRLF) $t_out = DllStructCreate("wchar[" & StringLen($in) & "]") ; LCMAP_BYTEREV := 0x800 $iRes = DllCall("kernel32.dll", "int", "LCMapStringW", "uint", 0, "dword", 0x800, "struct*", $t_in, "int", StringLen($in), "ptr", DllStructGetPtr($t_out), "int", StringLen($in)) ConsoleWrite($iRes[0] & @CRLF & $iRes[5] & @CRLF & $iRes[6] & @CRLF) ConsoleWrite(DllStructCreate("wchar[" & $iRes[6] & "]", $iRes[5]) & @CRLF & @CRLF) ConsoleWrite(StringToBinary(DllStructGetData($t_in, 1)) & @CRLF) ConsoleWrite(StringToBinary(DllStructGetData($t_out, 1)) & @CRLF) Edited April 11, 2013 by KaFu OS: Win10-22H2 - 64bit - German, AutoIt Version: 3.3.16.1, AutoIt Editor: SciTE, Website: https://funk.eu AMT - Auto-Movie-Thumbnailer (2024-Oct-13) BIC - Batch-Image-Cropper (2023-Apr-01) COP - Color Picker (2009-May-21) DCS - Dynamic Cursor Selector (2024-Oct-13) HMW - Hide my Windows (2024-Oct-19) HRC - HotKey Resolution Changer (2012-May-16) ICU - Icon Configuration Utility (2018-Sep-16) SMF - Search my Files (2025-May-18) - THE file info and duplicates search tool SSD - Set Sound Device (2017-Sep-16)
guinness Posted April 11, 2013 Posted April 11, 2013 So it's solved? I'm not in a position to run the code. UDF List: Reveal hidden contents _AdapterConnections() • _AlwaysRun() • _AppMon() • _AppMonEx() • _ArrayFilter/_ArrayReduce • _BinaryBin() • _CheckMsgBox() • _CmdLineRaw() • _ContextMenu() • _ConvertLHWebColor()/_ConvertSHWebColor() • _DesktopDimensions() • _DisplayPassword() • _DotNet_Load()/_DotNet_Unload() • _Fibonacci() • _FileCompare() • _FileCompareContents() • _FileNameByHandle() • _FilePrefix/SRE() • _FindInFile() • _GetBackgroundColor()/_SetBackgroundColor() • _GetConrolID() • _GetCtrlClass() • _GetDirectoryFormat() • _GetDriveMediaType() • _GetFilename()/_GetFilenameExt() • _GetHardwareID() • _GetIP() • _GetIP_Country() • _GetOSLanguage() • _GetSavedSource() • _GetStringSize() • _GetSystemPaths() • _GetURLImage() • _GIFImage() • _GoogleWeather() • _GUICtrlCreateGroup() • _GUICtrlListBox_CreateArray() • _GUICtrlListView_CreateArray() • _GUICtrlListView_SaveCSV() • _GUICtrlListView_SaveHTML() • _GUICtrlListView_SaveTxt() • _GUICtrlListView_SaveXML() • _GUICtrlMenu_Recent() • _GUICtrlMenu_SetItemImage() • _GUICtrlTreeView_CreateArray() • _GUIDisable() • _GUIImageList_SetIconFromHandle() • _GUIRegisterMsg() • _GUISetIcon() • _Icon_Clear()/_Icon_Set() • _IdleTime() • _InetGet() • _InetGetGUI() • _InetGetProgress() • _IPDetails() • _IsFileOlder() • _IsGUID() • _IsHex() • _IsPalindrome() • _IsRegKey() • _IsStringRegExp() • _IsSystemDrive() • _IsUPX() • _IsValidType() • _IsWebColor() • _Language() • _Log() • _MicrosoftInternetConnectivity() • _MSDNDataType() • _PathFull/GetRelative/Split() • _PathSplitEx() • _PrintFromArray() • _ProgressSetMarquee() • _ReDim() • _RockPaperScissors()/_RockPaperScissorsLizardSpock() • _ScrollingCredits • _SelfDelete() • _SelfRename() • _SelfUpdate() • _SendTo() • _ShellAll() • _ShellFile() • _ShellFolder() • _SingletonHWID() • _SingletonPID() • _Startup() • _StringCompact() • _StringIsValid() • _StringRegExpMetaCharacters() • _StringReplaceWholeWord() • _StringStripChars() • _Temperature() • _TrialPeriod() • _UKToUSDate()/_USToUKDate() • _WinAPI_Create_CTL_CODE() • _WinAPI_CreateGUID() • _WMIDateStringToDate()/_DateToWMIDateString() • Au3 script parsing • AutoIt Search • AutoIt3 Portable • AutoIt3WrapperToPragma • AutoItWinGetTitle()/AutoItWinSetTitle() • Coding • DirToHTML5 • FileInstallr • FileReadLastChars() • GeoIP database • GUI - Only Close Button • GUI Examples • GUICtrlDeleteImage() • GUICtrlGetBkColor() • GUICtrlGetStyle() • GUIEvents • GUIGetBkColor() • Int_Parse() & Int_TryParse() • IsISBN() • LockFile() • Mapping CtrlIDs • OOP in AutoIt • ParseHeadersToSciTE() • PasswordValid • PasteBin • Posts Per Day • PreExpand • Protect Globals • Queue() • Resource Update • ResourcesEx • SciTE Jump • Settings INI • SHELLHOOK • Shunting-Yard • Signature Creator • Stack() • Stopwatch() • StringAddLF()/StringStripLF() • StringEOLToCRLF() • VSCROLL • WM_COPYDATA • More Examples... Updated: 22/04/2018
KaFu Posted April 11, 2013 Author Posted April 11, 2013 (edited) Yes it is , was looking for a new way to find strings in files for SMF. Look at line "For $i = 1 To 4" to see where it's applied. expandcollapse popup#include <WinAPI.au3> Global $__FileSearchContent_iBufferSize = 1024 * 20 ; 20 KB Buffer Global $__FileSearchContent_tBuffer = DllStructCreate("byte[" & $__FileSearchContent_iBufferSize & "]") ConsoleWrite(__FileSearchContent(@ScriptFullPath, -1, "Test") & @CRLF) Func __FileSearchContent($sFile, $iFileSize = -1, $sSearchterm = "") ; ConsoleWrite($sSearchterm & @TAB & $sFile & @TAB & $iFileSize & @CRLF) Local $hFile = DllCall("kernel32.dll", 'ptr', 'CreateFileW', 'wstr', "\\?\" & $sFile, 'dword', 0x80000000, 'dword', 0, 'ptr', 0, 'dword', 3, 'dword', 0x10000000, 'ptr', 0) If (@error) Or ($hFile[0] = Ptr(-1)) Then Return SetError(1, 0, 0) If IsKeyword($iFileSize) Or $iFileSize = -1 Then $iFileSize = _WinAPI_GetFileSizeEx($hFile[0]) If $iFileSize = 0 Then DllCall("kernel32.dll", "bool", "CloseHandle", "handle", $hFile[0]) Return SetError(2, 0, 0) EndIf Local $iBytesToRead, $iFileSizeLeftToRead = $iFileSize, $tBuffer, $aRet While 1 If $iFileSizeLeftToRead < $__FileSearchContent_iBufferSize Then $iBytesToRead = $iFileSizeLeftToRead $tBuffer = DllStructCreate("byte[" & $iBytesToRead & "]") Else $iBytesToRead = $__FileSearchContent_iBufferSize $tBuffer = $__FileSearchContent_tBuffer EndIf $aRet = DllCall("kernel32.dll", "bool", "ReadFile", "handle", $hFile[0], "struct*", $tBuffer, "dword", $iBytesToRead, "dword*", 0, "ptr", 0) For $i = 1 To 4 If StringRegExp(BinaryToString(DllStructGetData($tBuffer, 1), $i), $sSearchterm) Then DllCall("kernel32.dll", "bool", "CloseHandle", "handle", $hFile[0]) Return 1 EndIf Next $iFileSizeLeftToRead -= $aRet[4] ; Bytes read If $iFileSizeLeftToRead <= 0 Then ExitLoop ; EOF reached DllCall("kernel32.dll", "int", "SetFilePointerEx", "handle", $hFile[0], "int64", -1024, "int64*", 0, "dword", 1) ; roll-back 1024 bytes to address possible overlaps $iFileSizeLeftToRead += 1024 WEnd DllCall("kernel32.dll", "bool", "CloseHandle", "handle", $hFile[0]) Return 0 EndFunc ;==>__FileSearchContent Edited April 11, 2013 by KaFu OS: Win10-22H2 - 64bit - German, AutoIt Version: 3.3.16.1, AutoIt Editor: SciTE, Website: https://funk.eu AMT - Auto-Movie-Thumbnailer (2024-Oct-13) BIC - Batch-Image-Cropper (2023-Apr-01) COP - Color Picker (2009-May-21) DCS - Dynamic Cursor Selector (2024-Oct-13) HMW - Hide my Windows (2024-Oct-19) HRC - HotKey Resolution Changer (2012-May-16) ICU - Icon Configuration Utility (2018-Sep-16) SMF - Search my Files (2025-May-18) - THE file info and duplicates search tool SSD - Set Sound Device (2017-Sep-16)
haijie1223 Posted March 30, 2017 Posted March 30, 2017 (edited) mean is “0x1a2b3c” to “ 0x3c2b1a”? use the command “ bitshift”? MsgBox(0, 0, Hex(BitShift('0x1a2b3c',0))) Translation: Meaning "0x1a2b3c" to "0x3c2b1a"? Use the command "bitshift"? Edited March 30, 2017 by haijie1223 Added translation
Moderators Melba23 Posted March 30, 2017 Moderators Posted March 30, 2017 haijie1223, Please post in English in future - if necessary do as I did and use a translation site. M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Reveal hidden contents ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now