私はBlackBerryアプリに取り組んでいます。このアプリは、「Basic4Android」プログラムですでに Android で開発されています。Android アプリのコードは vb.net で記述されています。BlackBerry 用にまったく同じコードを記述する必要があります。この方法を理解しようとしていますが、vb.net の専門家ではないため理解できません。メソッド全体を貼り付けるのではなく、明確にする必要がある部分のみを貼り付けます。
Sub HEX_T24_SHORT_GPS(latitude_decimal_degrees As Double, longitude_decimal_degrees As Double, speed_knots As Int, heading_degrees As Int, time_seconds_since_midnight_gmt As Int, alert_on As Boolean, alert_ack As Boolean, external_interface_control As Boolean, send_extended As Boolean) As String
Dim pBuffer(11) As Int
pBuffer(0)=0 ' T24 MSGID 0
Log("pBuffer(2)" & pBuffer(2))
Dim t1 As Double
'Get latitude sign
Dim lat_south As Boolean
lat_south=True
If latitude_decimal_degrees<0 Then lat_south=False
'Get Longitude sign
Dim lon_west As Boolean
lon_west=True
If longitude_decimal_degrees<0 Then lon_west=False
'Get number of second since midnigh extra bit
Dim num_of_second_extra_bit As Boolean
num_of_second_extra_bit=False
If time_seconds_since_midnight_gmt > 0xFFFF Then num_of_second_extra_bit=True
'Convert latitude in bytes 1 to 3
latitude_decimal_degrees = Abs(latitude_decimal_degrees*60000)
「If time_seconds_since_midnight_gmt > 0xFFFF」とはどういう意味ですか? ここで何が起こっているのか「latitude_decimal_degrees = Abs(latitude_decimal_degrees*60000)」。「Basic4Android」のドキュメントを確認しましたが、Abs API が見つかりませんでした。
If num_of_second_extra_bit=True Then latitude_decimal_degrees=latitude_decimal_degrees + 0x800000
pBuffer(1)=Bit.ShiftRight(Bit.And(latitude_decimal_degrees, 0xFF0000),16)
pBuffer(2)=Bit.ShiftRight(Bit.And(latitude_decimal_degrees, 0x00FF00),8)
pBuffer(3)=Bit.And(latitude_decimal_degrees, 0xFF)
ビットシフトはどのように適用されますか? int 値と 16 進数値の間で「AND」演算が使用されていますか? pBuffer(1) の最終的な値は? ステップ pBuffer(1) から pBuffer(3) の目的は何ですか。それは何をしていて、latitude_decimal_degrees の最終値は何ですか?最終値はバイト、バイト配列、または 16 進数ですか?説明してください。