SOGO論壇
標題:
如何在VB寫一個陣列轉換副程式
[列印本頁]
作者:
begti20
時間:
2011-11-24 06:03:00
標題:
如何在VB寫一個陣列轉換副程式
dim ds(8),dd(8) as byte ' ds 資料來源 dd資料目標陣列
如何寫一個 VB 或 VC 的副程式
將ds(7) .. ds(0)八個 byte 所有的 bit0 放到 dd(0)
將ds(7) .. ds(0)八個 byte 所有的 bit1 放到 dd(1)
...
將ds(7) .. ds(0)八個 byte 所有的 bit7 放到 dd(7)
例如 ds(0)=1,ds(1)=2,ds(2)=3,ds(3)=4,ds(4)=16,ds(5)=32,ds(6)=192,ds(7)=128
ds(7)=128___1 0 0 0 0 0 0 0
ds(6)=192___1 1 0 0 0 0 0 0
ds(5)=32____0 0 1 0 0 0 0 0
ds(4)=16____0 0 0 1 0 0 0 0
ds(3)=4_____0 0 0 0 0 1 0 0
ds(2)=3_____0 0 0 0 0 0 1 1
ds(1)=2_____0 0 0 0 0 0 1 0
ds(0)=1_____0 0 0 0 0 0 0 1
則傳回得結果為
dd(0)=5,dd(1)=6,dd(2)=8,dd(3)=0,dd(4)=16,dd(5)=32,dd(6)=64,dd(7)=192
作者:
Jackchen00
時間:
2011-11-24 11:28:20
本帖最後由 Jackchen00 於 2011-11-24 16:39 編輯
我用C的方式寫給你
unsigned char a = 0x01,b,i,j;
for (i = 0 , i < 8 ; i++)
{
dd[ i] = 0;
b = 0x01;
for (j = 0 , j < 8 , j++)
{
dd[ i] |= (ds[j] & a) == 0 ? 0 : b;
//或是也可以寫成 if ((ds[j] & a) != 0) dd[ i] = dd[ i] | b;
b <<= 1;
}
a <<= 1;
}
這也許不是最好的方法
但敝人不才只能想出這樣的方法
希望對你有幫助
作者:
alphi
時間:
2011-11-24 17:48:57
本帖最後由 alphi 於 2011-11-24 17:58 編輯
另一種寫法供您參考
#include <stdio.h>
#include <stdlib.h>
int main(int argc,char *argv[])
{
unsigned char dd[8]={0};
unsigned char ds[8]={1,2,3,4,16,32,192,128};
unsigned char i,j;
for(i=0;i<8;i++)
{
for(j=0;j<8;j++)
{
if(ds[i] & (1<<j))
dd[7-j]|=(1<<(i));
}
//printf("\r\n");
}
for(i=0;i<8;i++)
{
printf("dd[%d]=%d\r\n",i,dd[i]);
}
return 0;
}
複製代碼
作者:
begti20
時間:
2011-11-24 19:19:07
感謝2F,3F大師用C幫我解題,用 left bit shift 及 and 運算來解,太棒了!
敝人今天用VB 算術運算的方式解,方法很笨,但也可以達到需求
Dim dd(8) As Byte
Dim ds As Variant
Private Sub Form_Load()
ds = Array(1, 2, 3, 4, 16, 32, 192, 128)
ds(0) = 1
DeCoder
Text1.Text = dd(0) & " " & dd(1) & " " & dd(2) & " " & dd(3) & " " _
& dd(4) & " " & dd(5) & " " & dd(6) & " " & dd(7)
End Sub
Private Sub DeCoder()
Dim i, j As Integer
For i = 0 To 7
dd(i) = 0
For j = 0 To 7
dd(i) = dd(i) + ((ds(j) \ 2 ^ i) Mod 2) * 2 ^ j
Next j
Next i
End Sub
執行結果
2011-11-24 19:18:53 上傳
下載附件
(10.12 KB)
附件:
decoder.jpg
(2011-11-24 19:18:53, 10.12 KB) / 下載次數 21
https://oursogo.com/forum.php?mod=attachment&aid=OTMzMTA1fDNiMjNkZWFifDE3NTMwODg4OTR8MHww
歡迎光臨 SOGO論壇 (https://oursogo.com/)
Powered by OURSOGO.COM