PowerBuilder实现16进制字符串转换为10进制字符串

1、该问题困扰了我很久(主要还是基础不牢)。
实现原理:将16进制字符串转换为二进制字符串再去计算。
然后利用二进制的性质(逢二进一)进行转换为10进制。
废话不多说,上代码了。

在这里插入代码片
Char str[] = Upper("0f40fd3e7e11f6b63949e82c2f8c53eda34126ec")
String strtemp = ''
Long ll_row
int ll_number2[],ll_number1[]
str = 'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF'
For ll_row = 1 To UpperBound(str)
	Choose Case str[ll_row]
		Case '0'
			strtemp += '0000'
		Case '1'
			strtemp += '0001'
		Case '2'
			strtemp += '0010'
		Case '3'
			strtemp += '0011'
		Case '4'
			strtemp += '0100'
		Case '5'
			strtemp += '0101'
		Case '6'
			strtemp += '0110'
		Case '7'
			strtemp += '0111'
		Case '8'
			strtemp += '1000'
		Case '9'
			strtemp += '1001'
		Case 'A'
			strtemp += '1010'
		Case 'B'
			strtemp += '1011'
		Case 'C'
			strtemp += '1100'
		Case 'D'
			strtemp += '1101'
		Case 'E'
			strtemp += '1110'
		Case 'F'
			strtemp += '1111'
	End Choose
Next
str = strtemp //转换成二进制数组
For ll_row = 1 to 1010
	ll_number2[ll_row] = 0
	ll_number1[ll_row] = 0
Next
ll_number2[1] = 1
INt index = 0,li_add_array_length = 1
For ll_row = Upperbound(str) to 1 step -1

	If str[ll_row] = '1' Then
		For index = 1 to li_add_array_length
			ll_number1[index] += ll_number2[index]
			If (ll_number1[index] > 9) Then//逢十进一              
				ll_number1[index + 1] ++;
				ll_number1[index] -= 10;
			End If
		Next
	ENd IF
	For index = 1 to li_add_array_length//将数据翻倍 1 2 4 8 16
		ll_number2[index] += ll_number2[index]
	Next
	For index = 1 To li_add_array_length
		If ll_number2[index] > 9 Then//逢十进一
			ll_number2[index] -= 10
			ll_number2[index + 1] ++
		End IF
	Next
	If ll_number2[index] <> 0 Then//进位
		li_add_array_length++
	End IF
Next
strtemp = ''
for ll_row = li_add_array_length to 1 step -1
	If strtemp = '' AND ll_number1[ll_row] = 0 Then continue//最高位为0则不放进去
	strtemp += String(ll_number1[ll_row])
Next
//Messagebox('',li_add_array_length)
Messagebox('',strtemp)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值