# 64桁の01の数値列
set.seed(1)
a <- sample(0:1,64,replace =TRUE)
# 4桁の01の数値列を0,1,2,...fに対応づける
b <- as.matrix(expand.grid(rep(list(0:1),4)))
b <- b[,4:1]
d <- c(as.character(0:9),letters[1:6])
# 2進64桁を16進16桁に直す
chage64to16<- function(a){
b <- as.matrix(expand.grid(rep(list(0:1),4)))
b <- b[,4:1]
d <- c(as.character(0:9),letters[1:6])
n <- length(a)%/%4
ret <- rep(0,n)
for(i in 1:n){
tmp <- apply((t(b) - a[(1+4*(i-1)):(4*i)]==0),2,prod)
ret[i] <- d[which(tmp==1)]
}
ret
}
a
chage64to16(a)
を
bin2hex <- function(a) {
as.hexmode(apply(matrix(a, 4), 2, function(byte) sum(c(8, 4, 2, 1)*byte)))
}
のように書く。
実行速度もずいぶん速くなるけど,元のプログラムの方が,「2進数・16進数の変換を学ぶ」という目的にはあっているのか?
最新の画像[もっと見る]
-
算額(その2059) 2時間前
-
算額(その2057) 5時間前
-
算額(その2056) 20時間前
-
算額(その2055) 20時間前
-
算額(その2054) 1日前
-
算額(その2053) 1日前
-
算額(その2052) 1日前
-
算額(その2051) 1日前
-
算額(その2051) 1日前
-
算額(その2050) 2日前
1 コメント
コメント日が
古い順 |
新しい順
- as.hexmode (r-de-r)
- 2012-11-15 09:56:25
- as.hexmode の外に as.character が必要な場面もある
- 返信する
規約違反等の連絡