JavaSript实现

while(line = readline()){
    let a = line.trim().split(' ')
    console.log(mergeSortStr(a[0], a[1]))
}
// 合并字符传
function mergeSortStr(str1, str2){
    let mergeStr = str1 + str2
    let n = mergeStr.length
    let evenArr = [] // 偶数索引上的字符数组
    let oddArr = [] // 奇数索引上的字符数组
    let sortArr = []
    for(let i=0; i< n; i += 2){
        evenArr.push(mergeStr[i])
    }
    evenArr.sort() // 按照ASCII码值进行排序
    for(let j=1; j< n; j += 2){
        oddArr.push(mergeStr[j])
    }
    oddArr.sort()
    for(let k=0; k < n; k++){
        sortArr[k] = k % 2 === 0 ? evenArr.shift() : oddArr.shift()
    }
    while(evenArr.length >= 1){
        sortArr.push(evenArr.shift())
    }
    while(oddArr.length >= 1){
        sortArr.push(oddArr.shift())
    }
    changeBinary(sortArr)
    return sortArr.join('')
}

function changeBinary(strArr){
    for(let i=0; i< strArr.length; i++){
        let str = strArr[i]
        if(/[0-9]+/.test(str) || /[A-Fa-f]+/.test(str)){
            let twoArr = new Array(4).fill(0) // 定义长度为4的数组
            let binaryStr = parseInt(str, 16).toString(2) // 获取当前字符(十六进制)的二进制表示值
            for(let j = binaryStr.length -1, k = 3; j>=0; j--, k--){
                twoArr[k] = binaryStr[j]
            }
            let char = parseInt(twoArr.reverse().join(''), 2).toString(16).toUpperCase()
            strArr[i] = char
        }
    }
}