Jump to content

[SOLVED] Convert letters to specific numbers


Cookid
 Share

Recommended Posts

Okay so i'm really bad at this so I need some help. I've been looking all over to try to find a code that I can edit to process what I need, but I can't find any.

I want to convert, lets say, A to "11.", B to "12." and so on, and yes the period is included. But I haven't been able to find out how to do this.

So is it possible to do this? It would save tons of time.

Edited by Cookid
Solved
Link to comment
Share on other sites

  • Developers

Something simple like this?:

consolewrite( Convert("A") & @crlf)
consolewrite( Convert("B") & @crlf)
consolewrite( Convert("Z") & @crlf)


Func Convert($char)
    $char=StringUpper($char)
    $base=11
    $A_asc=65
    return (asc($char)-$A_asc+$base)&"."
EndFunc

Jos

SciTE4AutoIt3 Full installer Download page   - Beta files       Read before posting     How to post scriptsource   Forum etiquette  Forum Rules 
 
Live for the present,
Dream of the future,
Learn from the past.
  :)

Link to comment
Share on other sites

Another way to convert would be declaring a 2D array first then looping through it to convert your character. Not as simple as Jos example but you can convert any letter to anything you want it to be!

#include <Array.au3>
#include <String.au3>

Global $arr1[26][2] = [["A", "11."], ["B", "12."]] ;ect ect

Func Convert($char)
   For $i = 0 To UBound($arr1) - 1 Step 1
      If $char = $arr1[$i][0] Then
         $char = $arr1[$i][1]
         Return($char)
      EndIf
   Next
EndFunc

Also, Hi everyone (first post)

Edited by Davidowicza
coding fix
Link to comment
Share on other sites

On 9/18/2018 at 2:45 PM, Jos said:

Something simple like this?:

consolewrite( Convert("A") & @crlf)
consolewrite( Convert("B") & @crlf)
consolewrite( Convert("Z") & @crlf)


Func Convert($char)
    $char=StringUpper($char)
    $base=11
    $A_asc=65
    return (asc($char)-$A_asc+$base)&"."
EndFunc

Jos

This works nice, but by the way it's setup the letters end up getting translated incorrectly, as I said it's very specific and I'm not sure how to adjust it to that.

While A and B are correct on there, as 11 and 12, Z would be 56. And I don't think it can be modified correctly with the "StringUpper" fuction.

Sorry for how complicated this is. If needed this is all the correct translations:

Spoiler

A = 11. B = 12. C = 13. D = 14. E = 15.
F = 21. G = 22. H = 23. I = 24. J = 25.
K = 31. L = 32. M = 33. N = 34. O = 35.
P = 41. Q = 42. R = 43. S = 44. T = 45.
U = 51. V = 52. W = 53. X = 54. Y = 55. Z = 56.

 

Edited by Cookid
Link to comment
Share on other sites

18 minutes ago, Subz said:

Just use Davids method above, that way you can customize your numbers as required.

Well i've tried using it but I can't get it to output anything else but 0.  I've tried stating the "ARRL" as a letter but that doesnt work. Is there a specific thing I have to do for it to pick a letter?

Link to comment
Share on other sites

Not sure how your coding it but see example here:

Global $aConversion[26][2] = [["A", "11."], ["B", "12."], ["C", "13."], ["D", "14."], ["E", "15."], ["F", "21."], ["G", "22."], ["H", "23."], ["I", "24."], ["J", "25."], ["K", "31."], ["L", "32."], ["M", "33."], ["N", "34."], ["O", "35."], ["P", "41."], ["Q", "42."], ["R", "43."], ["S", "44."], ["T", "45."], ["U", "51."], ["V", "52."], ["W", "53."], ["X", "54."], ["Y", "55."], [" Z", "56."]]

For $i = 0 To UBound($aConversion) - 1
    MsgBox(4096, "Conversion", $aConversion[$i][0] & " = " & Convert($aConversion[$i][0]), 1)
Next

Func Convert($sChar)
   For $i = 0 To UBound($aConversion) - 1 Step 1
      If $sChar = $aConversion[$i][0] Then
         $sChar = $aConversion[$i][1]
         Return($sChar)
      EndIf
   Next
EndFunc

 

Edited by Subz
Forgot to add the function doh
Link to comment
Share on other sites

16 hours ago, Cookid said:

Well i've tried using it but I can't get it to output anything else but 0.  I've tried stating the "ARRL" as a letter but that doesnt work. Is there a specific thing I have to do for it to pick a letter?

It'll be easier to help if you post your code if you are still having issues.

Link to comment
Share on other sites

This is an exercise in "It can be done".

; https://www.autoitscript.com/forum/topic/195770-solved-convert-letters-to-specific-numbers/?do=findComment&comment=1403424
Local $iGroupSize = 5
For $i = 65 To 90
    ;ConsoleWrite(Chr($i) & " = " & _Alpha2Numeric(Chr($i), 3, 8, 12) & (Mod($i - 64, 8) ? " " : @CRLF))
    ConsoleWrite(Chr($i) & " = " & _Alpha2Numeric(Chr($i), 11, $iGroupSize, 10) & (Mod($i - 64, $iGroupSize) ? " " : "   <-- a group" & @CRLF))
Next
ConsoleWrite("        <-- sequencially carried on from the previous group" & @CRLF)


; Parameters:-
; $char       - The character to be converted to a number.
; $base       - The starting number for "A".  The first character in the first group.
; $iGroupSize - The maximum number of characters in a group.
; $iGroupJump - A number that each group is incremented by.
;
Func _Alpha2Numeric($char, $base = 11, $iGroupSize = 5, $iGroupJump = 10)
    If $iGroupJump < $iGroupSize Then MsgBox(0, "Warning", "Duplicate numbers will be assigned to different letters")
    $char = StringUpper($char)
    Local $A_asc = 65
    Local $iPosAtEnd = AscW("Z") - Mod(26, $iGroupSize) ; Unicode code of a last character of last whole group (of $iGroupSize size).
    If AscW($char) > $iPosAtEnd Then _ ; The last incomplete group will sequencially continue on from the second last group of numbers. i.e. $iGroupJump will not be used on the last incomplete group.
            Return _Alpha2Numeric(ChrW($iPosAtEnd), $base, $iGroupSize, $iGroupJump) + AscW($char) - $iPosAtEnd & "."

    $Increm = Mod(Asc($char) - $A_asc, $iGroupSize) + $base ; For each group of 5 (or $iGroupSize) numbers, we have:  $Increm = Base + (0 to 4)
    $iFactor = (Int((Asc($char) - $A_asc) / $iGroupSize)) * $iGroupJump ; Every nth group of 5 numbers, multiply by 10 (or $iGroupJump) i.e. (10 * n), where first in group is n = 0.
    Return $iFactor + $Increm & "."
EndFunc   ;==>_Alpha2Numeric

#cs ; _Alpha2Numeric(Chr($i), 11, 5, 10) returns:-
    A = 11. B = 12. C = 13. D = 14. E = 15.   <-- a group
    F = 21. G = 22. H = 23. I = 24. J = 25.   <-- a group
    K = 31. L = 32. M = 33. N = 34. O = 35.   <-- a group
    P = 41. Q = 42. R = 43. S = 44. T = 45.   <-- a group
    U = 51. V = 52. W = 53. X = 54. Y = 55.   <-- a group
    Z = 56.         <-- sequencially carried on from the previous group

    _Alpha2Numeric(Chr($i), 3, 8, 12) returns:-
    A = 3. B = 4. C = 5. D = 6. E = 7. F = 8. G = 9. H = 10.
    I = 15. J = 16. K = 17. L = 18. M = 19. N = 20. O = 21. P = 22.
    Q = 27. R = 28. S = 29. T = 30. U = 31. V = 32. W = 33. X = 34.
    Y = 35. Z = 36.         <-- sequencially carried on from the previous group
#ce

 

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...