출처1 : https://stackoverflow.com/questions/25546282/javascript-convert-hexadecimal-value-into-signed-8-bit-integer

출처2 : https://stackoverflow.com/questions/3195865/converting-byte-array-to-string-in-javascript




spring boot과 mysql로 개발을 하고 있는데, 기본키를 binary(16)의 uuid로 설정을 했다. 


추후 데이터를 controller에서 @ModelAttribute로 값을 읽어들이는데, ajax를 통해 base64로 인코딩된 binary 데이터를 콘트롤러에서 인식을 잘 못하길래 만들게 되었다. 


검색을 하다보니 javascript에서는 unsigned integer array로 변환하는 예제가 많더라.


var binaryStringEncodeBase64 = "EehaWBvLbKaSO3SGejQUzg==";

var signedIntArray = Base64StringToBinaryArray(binaryStringEncodeBase64);

 

 

function Base64StringToBinaryArray(base64str) {

    // binary(16) 를 키로 사용할 때 controller에서 modelAttribute로 읽으면

    // base64 encoding 된 데이터는 못 읽어온다.

    // 이때 이 함수를 사용해서 signed int array로 변환하여 값을 넣어주면 읽어드린다.

   

    var decodeString = atob(base64str);

    var b = new Array();

    var last = decodeString.length;

 

    for (var i = 0; i < last; i++) {

        var d = decodeString.charCodeAt(i);

        if (d < 128)

            b[i] =  d;

        else {

           

            b[i] =  d - 256;

        }

    }

    return b;

}

 


Posted by motolies
,