Android Question how to parse string as int

ArminKH

Well-Known Member
hi this is my code
B4X:
        Dim ss As String = "0xff000000"
        Dim i As Int = ss
        Log(i)

and error : java.lang.NumberFormatException: For input string: "0xff000000"
 

ArminKH

Well-Known Member
This is not a valid number. Hex notation only works during compilation.

You need to remove the 0x prefix and use Bit.ParseInt.
sorry but this code also does not works
B4X:
        Dim ss As String = "ff000000"
        Dim i As Int = Bit.ParseInt(ss,16)
        Log(i)

error : java.lang.NumberFormatException: Invalid int: "ff000000"
 
Upvote 0

ArminKH

Well-Known Member
this is my own java code to add an alpha to material colors but result is string
so what i need in b4a is to parse result as int to use in b4a

B4X:
    /**
     * Add an alpha to the material colors and return prepared color with given alpha
     *
     * Log(MaterialColorMaker("#FFFFFF",0.83))
     */
    public String MaterialColorMaker(String MaterialColorCode, double Alpha) {
        long l = Math.round(Alpha * 255D);
        String s1 = Long.toHexString(l);
        if (s1.length() == 1)
            s1 = (new StringBuilder()).append("0").append(s1).toString();
        MaterialColorCode = MaterialColorCode.replace("#", (new StringBuilder()).append("0x").append(s1).toString());
        return MaterialColorCode;
    }
 
Upvote 0

ArminKH

Well-Known Member
The value is too large for int. You can parse it with:
B4X:
Sub Parse(s As String) As Int
   Dim jo As JavaObject
   Return jo.InitializeStatic("java.lang.Long").RunMethod("parseLong", Array(s, 16))
End Sub
thank u.
and if is possible can u please help me to convert an alpha to hex value?(or we can discuse in another thread)
for example black 87% is 0xDE000000 and DE refers to 87
my above code is a java workaround but i dont want to compile it to library or use inline java
so has b4a any internal method to achive to to my code?

results are :
B4X:
100% — FF
99% — FC
98% — FA
97% — F7
96% — F5
95% — F2
94% — F0
93% — ED
92% — EB
91% — E8
90% — E6
89% — E3
88% — E0
87% — DE
86% — DB
85% — D9
84% — D6
83% — D4
82% — D1
81% — CF
80% — CC
79% — C9
78% — C7
77% — C4
76% — C2
75% — BF
74% — BD
73% — BA
72% — B8
71% — B5
70% — B3
69% — B0
68% — AD
67% — AB
66% — A8
65% — A6
64% — A3
63% — A1
62% — 9E
61% — 9C
60% — 99
59% — 96
58% — 94
57% — 91
56% — 8F
55% — 8C
54% — 8A
53% — 87
52% — 85
51% — 82
50% — 80
49% — 7D
48% — 7A
47% — 78
46% — 75
45% — 73
44% — 70
43% — 6E
42% — 6B
41% — 69
40% — 66
39% — 63
38% — 61
37% — 5E
36% — 5C
35% — 59
34% — 57
33% — 54
32% — 52
31% — 4F
30% — 4D
29% — 4A
28% — 47
27% — 45
26% — 42
25% — 40
24% — 3D
23% — 3B
22% — 38
21% — 36
20% — 33
19% — 30
18% — 2E
17% — 2B
16% — 29
15% — 26
14% — 24
13% — 21
12% — 1F
11% — 1C
10% — 1A
9% — 17
8% — 14
7% — 12
6% — 0F
5% — 0D
4% — 0A
3% — 08
2% — 05
1% — 03
0% — 00

what i need is convert percentages to hex values
some thing like this
B4X:
Sub Percentage2Hex(Percentage As Double)
    Return HexValue(Percentage)
End Sub
 
Upvote 0

ArminKH

Well-Known Member
this code works thank u @Erel
B4X:
Sub PercentageToHex(Percentage As Int) As String
    If Percentage > 100 Then Percentage = 100
    If Percentage < 0    Then Percentage = 0
 
    Dim Value As Int = Round((Percentage * 255) / 100)
    Return Bit.ToHexString(Value)
End Sub
 
Upvote 0
Top