Se vuoi passarli in byte per poi utilizzarli in ascii o come ti pare a te fai cosi:
B4X:
Dim S As String ="Ciao"
Dim B() As Byte = S.GetBytes
Poi con la libreria B4Xserializator usando la classe RandomAccess puoi trovare il comando WriteEncryptedObject (vedi qui)
Oppure Encryption library (vedi qui)
Ciao ragazzi grazie al consiglio di Star-Dust riesco a convertire il file..., per poterlo usare devo convertirlo ma come devo fare ?
mi sembra che usare " UTF-8 o ASCII oppure UTF8 la conversione in numeri binari non cambia, anche questo mi sembra strano
B4X:
Dim msg1 As String = "Ciao Ragazi del forum B4A Italiano"
Dim msgx As String
Dim msg2() As Byte = msg1.GetBytes("UTF-8")' / ASCII / UTF8
For i=0 To msg2.Length - 1
msgx = msgx & msg2(i)
Next
2 sub una per la codifica e salvataggio della stringa
e un altra per la lettura del file codificato e la decodifica in una stringa
B4X:
Sub SalvaTestoCodificato
Dim Str As String "Stringa da codificare"
BytesToFile(File.DirRootExternal,"stringa.code",Complementar(Code(Str))
End Sub
Sub CaricaTestoCodificato
Dim S As String= Decode(Complementar(FileToBytes(File.DirRootExternal,"stringa.code") ))
End Sub
Sub per il salvataggio e il caricamento dei file in Byte
B4X:
Sub BytesToFile (Dir As String, FileName As String, Data() As Byte)
Dim out As OutputStream = File.OpenOutput(Dir, FileName, False)
out.WriteBytes(Data, 0, Data.Length)
out.Close
End Sub
Sub FileToBytes (Dir As String, FileName As String) As Byte()
Return Bit.InputStreamToBytes(File.OpenInput(Dir, FileName))
End Sub
Da stringa a array di byte (code), Da Array di Byte a stringa (Decode), e Sub per codificare in complemento a 2 (in modo da rendere il file non leggibile)
B4X:
' Da Stringa a Array di Byte
Sub Code(S As String) As Object
Return S.GetBytes("UTF8")
End Sub
' Da Array di Byte a Stringa
Sub Decode(bytes() As Byte) As String
Return BytesToString(bytes, 0, bytes.Length, "UTF8")
End Sub
' Codifica di ogni byte con complemento a 2
Sub Complementar(Bytes() As Byte) As Object
Dim Cry(Bytes.Length) As Byte
For i=0 To Bytes.Length-1
' complemento a 2
Cry(i)=255-Bytes(i)
Next
Return Cry
End Sub
Scusate, avrei bisogno di un semplice esempio (tipo 111 che corrisponde alla "o" oppure "32" che corrisponde allo spazio, dovrei capere come trasformali in lettera il "111" e il "32" in spazio.
non voglio trasformare l'intera stringa ma carattere per carattere, ho fatto molti tentativi senza riuscirci.
Grazie 1000
Cerca le funzioni Chr e Asc.
La prima prende un valore e lo trasforma in carattere (unicode); la seconda opera all'inverso, da carattere a codice.
Per la crittazione vera e propria fai riferimento ai suggerimenti di SD nel post#2; in genere è altamente sconsigliato inventarsi propri sistemi di crittazione che difficilemnte potranno regegre il confronto con quanto prodotto da esperti del settore.
infatti con l'esempio di SD Dim B() As Byte = S.GetBytes li converto ma non riesco a trasformarli in strina o meglio mi trasforma l'intera stringa, io voglio manipolare i dati aggiungendo valori diversi a secondo della posizione, lunghezza file, ecc. come ho gia fatto in vb6.
Grazie 1000
Basta operare su ciascun byte.
La stringa si passa a byte e poi si opera sul singolo byte.
B4X:
Dim S ad String =""
For i=0To Bytes.Length-1
Log(Bytes(i))
Dim SingoloValore as Byte=Bytes(i)
S=S & chr(SingoloValore + ValoreDaAggiungereSecondoPosizione)
Next
oppure
B4X:
Sub Code(Bytes() As Byte) As String
Dim Cry(Bytes.Length) As Byte
For i=0 To Bytes.Length-1
' complemento a 2
Cry(i)=Bytes(i) + ValoreDaAggiungereSecondoPosizione
Next
Return BytesToString(bytes, 0, bytes.Length, "UTF8")
End Sub
Ma anche io penso come @udg che è meglio usare una codifica professionale e non una fai da te