# 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進数の変換を学ぶ」という目的にはあっているのか?
最新の画像[もっと見る]
- 算額(その2105) 16時間前
- 算額(その2104) 17時間前
- 算額(その2103) 23時間前
- 算額(その2102) 1日前
- 算額(その2101) 1日前
- 算額(その2100) 2日前
- 算額(その2097) 4日前
- 算額(その2096) 4日前
- 算額(その2095) 5日前
- 算額(その2094) 6日前
1 コメント
コメント日が
古い順 |
新しい順
- as.hexmode (r-de-r)
- 2012-11-15 09:56:25
- as.hexmode の外に as.character が必要な場面もある
- 返信する
規約違反等の連絡