アプリ版:「スタンプのみでお礼する」機能のリリースについて

あるパスワードをテキストファイルに書き込む処理です。
そのままだと、パスワードの意味が無いので、上位4ビットと下位4ビットを入れ替えて保存しようと思います。
上位・下位それぞれ4ビットシフトするところまでは出来ました。

 Dim a As Integer
 Dim a1 As Integer
 Dim a2 As Integer
 a = Asc("a")
 a1 = a \ 2 ^ 4
 a2 = a * 2 ^ 4
 MsgBox (Hex(a1))
 MsgBox (Hex(a2))

が、それを8ビットに戻す方法が分かりません。
また、パスワードは1バイト文字による文字列ですが、文字列長分を1バイトずつバッファに読み込んで、変換し、同サイズのバッファに詰め込んでいく処理も分かりません。
以前、MS-C(MSDOS上のC言語)を少しやったので、それでなら分かるのですが、VBは全くの初心者で、調べても調べても見当がつきません。
どうか教えて下さい。
宜しくお願い致します。

A 回答 (4件)

●1バイト文字の上位4ビット・下位4ビットの入れ替え


参考。理解・確認のため余分なものを入れている。
骨子は*****のところ。
Sub test01()
h = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", _
"9", "A", "B", "C", "D", "E", "F")
a = Asc("z")
MsgBox "コード" & a
x = a Mod 16 '*****
y = Int(a / 16) '*****
MsgBox "16進表示" & h(x) & " " & h(y)
'もとの数のビット列
s = ""
x = a
For i = 1 To 8
y = x Mod 2
s = y & s
x = Int(x / 2)
Next i
MsgBox "もとの数のビット列" & s
'----
'上位・下位4ビット反転
x = a Mod 16
y = Int(a / 16)
z = x * 16 + y '*****
MsgBox "上位・下位4ビット反転のコード" & z
x = z Mod 16
y = Int(z / 16)
MsgBox "16進表示" & h(x) & " " & h(y)
'------上位・下位4ビット反転のビット列
s = ""
x = z
For i = 1 To 8
y = x Mod 2
s = y & s
x = Int(x / 2)
Next i
MsgBox "上位・下位4ビット反転" & s
End Sub
●文字列長分を1バイトずつバッファに読み込んで、変換し、同サイズのバッファに詰め込んでいく処理も分かりません
上記でもやってますが、
S=""
For i=1 to 文字列長
Xには1バイト分上位・下位4ビット反転した結果を入れる
S=S & X
Next i
を使えば良いです。
下位桁から処理なら
S= X & S
にする。
    • good
    • 0

Private Sub Form_Click()


Dim a As Byte
Dim b As Byte
Dim i As Integer
For i = 0 To &HFF
a = i
b = (a And &HF) * &H10 Or (a And &HF0) \ &H10
Debug.Print Hex(a), Hex(b)
Next
End Sub
    • good
    • 0

>文字列長分を1バイトずつバッファに読み込んで、変換し、同サイズのバッファに詰め込んでいく処理


for i=1 to len(strbuff)
Mid(strbuff, i, 1) = 変換(Mid(strbuff, i, 1))
Next
next
    • good
    • 0

> それを8ビットに戻す方法が分かりません。



文字→8ビットは、
 a = Asc("a")

で出来ていますね。
Asc関数をヘルプで調べると、関連項目にChrという関数がありますので、こちらを利用します。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!